diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | elf/dl-reloc.c | 19 |
2 files changed, 22 insertions, 2 deletions
@@ -1,3 +1,8 @@ +2002-10-23 Alexandre Oliva <aoliva@redhat.com> + + * elf/dl-reloc.c (_dl_reloc_bad_use): Print the full 32-bit relocation + type on ELF64 platforms. + 2002-10-24 Ulrich Drepper <drepper@redhat.com> * elf/elf.h (R_X86_64_GOTTPOFF): Renamed from r_x86_64_GOTTPOFF. diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index d6db62b..16017b3 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -225,12 +225,27 @@ _dl_reloc_bad_type (struct link_map *map, unsigned int type, int plt) #define DIGIT(b) INTUSE(_itoa_lower_digits)[(b) & 0xf]; /* XXX We cannot translate these messages. */ - static const char msg[2][32] = { "unexpected reloc type 0x", - "unexpected PLT reloc type 0x" }; + static const char msg[2][32 +#if __ELF_NATIVE_CLASS == 64 + + 6 +#endif + ] = { "unexpected reloc type 0x", + "unexpected PLT reloc type 0x" }; char msgbuf[sizeof (msg[0])]; char *cp; cp = __stpcpy (msgbuf, msg[plt]); +#if __ELF_NATIVE_CLASS == 64 + if (__builtin_expect(type > 0xff, 0)) + { + *cp++ = DIGIT (type >> 28); + *cp++ = DIGIT (type >> 24); + *cp++ = DIGIT (type >> 20); + *cp++ = DIGIT (type >> 16); + *cp++ = DIGIT (type >> 12); + *cp++ = DIGIT (type >> 8); + } +#endif *cp++ = DIGIT (type >> 4); *cp++ = DIGIT (type); *cp = '\0'; |