[patch] print additional mips elf 64 reloc type info in readelf
Timothy Daly
remote_bob@yahoo.com
Mon Feb 18 14:23:00 GMT 2002
More information about the Binutils mailing list
Mon Feb 18 14:23:00 GMT 2002
- Previous message (by thread): [patch] print additional mips elf 64 reloc type info in readelf
- Next message (by thread): [patch] print additional mips elf 64 reloc type info in readelf
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi all. :) --- Nick Clifton <nickc@cambridge.redhat.com> wrote: > Hi Timothy, > [snip] > I would recommend multiple lines. Readelf is supposed to be an [snip] Revised patch and changelog below. The output for 64-bit mips is now on three lines, like so: Relocation section '.rel.dyn' at offset 0x31c38 contains 3616 entries: Offset Info Type Sym. Value Sym. Name 000000000000 000000000000 R_MIPS_NONE Type2: R_MIPS_NONE Type3: R_MIPS_NONE 00000db321c0 001000001203 R_MIPS_REL32 000000000d9c82d0 .text Type2: R_MIPS_64 Type3: R_MIPS_NONE 00000db321c8 001000001203 R_MIPS_REL32 000000000d9c82d0 .text Type2: R_MIPS_64 Type3: R_MIPS_NONE (...) I compactified 32-bit output a little bit too. -Tim [src/binutils/ChangeLog] 2002-02-18 Timothy Daly <remote_bob@yahoo.com> * readelf.c (dump_relocations): Display 2nd and 3rd reloc types for 64-bit MIPS. Narrow some fields for 80-char output. (dump_relocations): Change spelling from 'unrecognised' to 'unrecognized'. (decode_ARM_machine_flags): Likewise. (parse_args): Likewise. (read_and_display_attr_value): Likewise. (display_debug_section): Likewise. Index: readelf.c =================================================================== RCS file: /cvs/src/src/binutils/readelf.c,v retrieving revision 1.151 diff -u -p -r1.151 readelf.c --- readelf.c 2002/02/13 18:14:42 1.151 +++ readelf.c 2002/02/18 21:53:04 @@ -846,28 +846,32 @@ dump_relocations (file, rel_offset, rel_ { if (is_rela) printf - (_(" Offset Info Type Symbol's Value Symbol's Name Addend\n")); + (_(" Offset Info Type Sym. Value Sym. Name Addend\n")); else printf - (_(" Offset Info Type Symbol's Value Symbol's Name\n")); + (_(" Offset Info Type Sym. Value Sym. Name\n")); } else { if (is_rela) printf - (_(" Offset Info Type Symbol's Value Symbol's Name Addend\n")); + (_(" Offset Info Type Sym. Value Sym. Name Addend\n")); else printf - (_(" Offset Info Type Symbol's Value Symbol's Name\n")); + (_(" Offset Info Type Sym. Value Sym. Name\n")); } for (i = 0; i < rel_size; i++) { const char * rtype; + const char * rtype2 = NULL; + const char * rtype3 = NULL; bfd_vma offset; bfd_vma info; bfd_vma symtab_index; bfd_vma type; + bfd_vma type2 = NULL; + bfd_vma type3 = NULL; if (is_rela) { @@ -889,6 +893,12 @@ dump_relocations (file, rel_offset, rel_ { if (elf_header.e_machine == EM_SPARCV9) type = ELF64_R_TYPE_ID (info); + else if (elf_header.e_machine == EM_MIPS) + { + type = ELF64_MIPS_R_TYPE (info); + type2 = ELF64_MIPS_R_TYPE2 (info); + type3 = ELF64_MIPS_R_TYPE3 (info); + } else type = ELF64_R_TYPE (info); /* The #ifdef BFD64 below is to prevent a compile time warning. @@ -910,13 +920,13 @@ dump_relocations (file, rel_offset, rel_ else { #ifdef _bfd_int64_low - printf ("%8.8lx%8.8lx %8.8lx%8.8lx ", + printf ("%4.4lx%8.8lx %4.4lx%8.8lx ", _bfd_int64_high (offset), _bfd_int64_low (offset), _bfd_int64_high (info), _bfd_int64_low (info)); #else - printf ("%16.16lx %16.16lx ", offset, info); + printf ("%12.12lx %12.12lx ", offset, info); #endif } @@ -1006,6 +1016,11 @@ dump_relocations (file, rel_offset, rel_ case EM_MIPS: case EM_MIPS_RS3_LE: rtype = elf_mips_reloc_type (type); + if (!is_32bit_elf) + { + rtype2 = elf_mips_reloc_type (type2); + rtype3 = elf_mips_reloc_type (type3); + } break; case EM_ALPHA: @@ -1067,12 +1082,12 @@ dump_relocations (file, rel_offset, rel_ if (rtype == NULL) #ifdef _bfd_int64_low - printf (_("unrecognised: %-7lx"), _bfd_int64_low (type)); + printf (_("unrecognized: %-7lx"), _bfd_int64_low (type)); #else - printf (_("unrecognised: %-7lx"), type); + printf (_("unrecognized: %-7lx"), type); #endif else - printf ("%-21.21s", rtype); + printf ("%-17.17s", rtype); if (symtab_index) { @@ -1089,11 +1104,11 @@ dump_relocations (file, rel_offset, rel_ printf (" "); if (psym->st_name == 0) - print_symbol (-25, SECTION_NAME (section_headers + psym->st_shndx)); + print_symbol (-13, SECTION_NAME (section_headers + psym->st_shndx)); else if (strtab == NULL) printf (_("<string table index %3ld>"), psym->st_name); else - print_symbol (-25, strtab + psym->st_name); + print_symbol (-13, strtab + psym->st_name); if (is_rela) printf (" + %lx", (unsigned long) relas [i].r_addend); @@ -1101,7 +1116,7 @@ dump_relocations (file, rel_offset, rel_ } else if (is_rela) { - printf ("%*c", is_32bit_elf ? 34 : 26, ' '); + printf ("%*c", is_32bit_elf ? 28 : 20, ' '); print_vma (relas[i].r_addend, LONG_HEX); } @@ -1110,6 +1125,30 @@ dump_relocations (file, rel_offset, rel_ printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (info)); putchar ('\n'); + if (!is_32bit_elf && elf_header.e_machine == EM_MIPS) + { + printf(" Type2: "); + if (rtype2 == NULL) +#ifdef _bfd_int64_low + printf (_("unrecognized: %-7lx"), _bfd_int64_low (type2)); +#else + printf (_("unrecognized: %-7lx"), type2); +#endif + else + printf ("%-17.17s", rtype2); + putchar ('\n'); + + printf(" Type3: "); + if (rtype3 == NULL) +#ifdef _bfd_int64_low + printf (_("unrecognized: %-7lx"), _bfd_int64_low (type3)); +#else + printf (_("unrecognized: %-7lx"), type3); +#endif + else + printf ("%-17.17s", rtype3); + putchar ('\n'); + } } if (is_rela) @@ -1504,7 +1543,7 @@ decode_ARM_machine_flags (e_flags, buf) switch (eabi) { default: - strcat (buf, ", <unrecognised EABI>"); + strcat (buf, ", <unrecognized EABI>"); if (e_flags) unknown = 1; break; @@ -2373,7 +2412,7 @@ parse_args (argc, argv) break; default: - warn (_("Unrecognised debug option '%s'\n"), optarg); + warn (_("Unrecognized debug option '%s'\n"), optarg); break; } } @@ -7379,7 +7418,7 @@ read_and_display_attr_value (attribute, break; default: - warn (_("Unrecognised form: %d\n"), form); + warn (_("Unrecognized form: %d\n"), form); break; } @@ -8602,7 +8641,7 @@ display_debug_section (section, file) } if (i == -1) - printf (_("Unrecognised debug section: %s\n"), name); + printf (_("Unrecognized debug section: %s\n"), name); free (start); __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com -------------- next part -------------- A non-text attachment was scrubbed... Name: readelf.diff Type: text/x-diff Size: 5706 bytes Desc: readelf.diff URL: <https://sourceware.org/pipermail/binutils/attachments/20020218/baefbe82/attachment.bin>
- Previous message (by thread): [patch] print additional mips elf 64 reloc type info in readelf
- Next message (by thread): [patch] print additional mips elf 64 reloc type info in readelf
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list