
Le 30/11/2010 09:47, Joakim Tjernlund a écrit :
Le 30/11/2010 08:06, Andreas Bießmann a écrit :
Signed-off-by: Andreas Bießmannandreas.devel@googlemail.com
- cmp r1, #0 /* symbol == NULL ? */
- beq fixnext
Nak. Don't hide a null pointer. NULL pointers are *not* relocated, since they are a constant. If a NULL ends up in relocation tables, that is because of a corruption *or* because it was to be relocated, and should thus never be ignored.
Depends, if the same routine is used for relocating fixups you need this test. Undefined weaks will generate a NULL fixup entry.
Understood.
Weren't there an effort to not use weak symbols any more?
If not, then a comment *must* be added to indicate that weak symbols can cause zero-filled reloc entries (I would suggest saying 'zero-filled' rather than 'NULL', because obviously readers will think of stdio's NULL).
We could possibly even send out a diagnostic message, but that'll be when the relocation code is turned to C language; I don't want to see asm code that calls printf.
Jocke
Amicalement,