diff options
author | Joakim Tjernlund | 2009-10-08 02:03:51 +0200 |
---|---|---|
committer | Wolfgang Denk | 2009-10-08 09:33:36 +0200 |
commit | afc3ba0fc4195624e79e21244380ed7cc2fd6969 (patch) | |
tree | 1ac329f1981d1871a31d2e0d26d4f53193695a56 /cpu/mpc5xx/start.S | |
parent | 3beb40c2473f0dd373231c723d88c51e46ad96f7 (diff) |
relocation: Do not relocate NULL pointers.
NULL is an absolute value and should not be relocated.
After this correction code like:
void weak_fun(void) __attribute__((weak));
printf("weak_fun:%p\n", weak_fun);
will still print null after relocation.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Diffstat (limited to 'cpu/mpc5xx/start.S')
-rw-r--r-- | cpu/mpc5xx/start.S | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/cpu/mpc5xx/start.S b/cpu/mpc5xx/start.S index 106935cb636..85ea7a88276 100644 --- a/cpu/mpc5xx/start.S +++ b/cpu/mpc5xx/start.S @@ -458,15 +458,17 @@ in_ram: sub r11,r3,r11 addi r3,r3,-4 1: lwzu r0,4(r3) + cmpwi r0,0 + beq- 2f add r0,r0,r11 stw r0,0(r3) - bdnz 1b +2: bdnz 1b /* * Now adjust the fixups and the pointers to the fixups * in case we need to move ourselves again. */ -2: li r0,__fixup_entries@sectoff@l + li r0,__fixup_entries@sectoff@l lwz r3,GOT(_FIXUP_TABLE_) cmpwi r0,0 mtctr r0 |