From 5892b099933d912ab9a633730f5eb77ac080d7bc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 21 Jul 1998 20:15:58 +0000 Subject: [PATCH] Use symbolic names of relocation entries for the various architectures. Correct more layout details. Print names of MIPS specific section types. Print Alpha, ARM, and MIPS relocation type names. --- binutils/readelf.c | 861 +++++++++++++++++++++++++++++---------------- 1 file changed, 552 insertions(+), 309 deletions(-) diff --git a/binutils/readelf.c b/binutils/readelf.c index f787756c36f..06aa1202d69 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -29,9 +29,22 @@ #include "bfd.h" #include "elf/common.h" -#include "elf/ppc.h" +#include "elf/alpha.h" +#include "elf/arm.h" +#include "elf/d10v.h" +/* start-sanitize-d30v */ +#include "elf/d30v.h" +/* end-sanitize-d30v */ +#include "elf/i386.h" #include "elf/m32r.h" +#include "elf/m68k.h" #include "elf/mips.h" +#include "elf/mn10200.h" +#include "elf/mn10300.h" +#include "elf/ppc.h" +#include "elf/sh.h" +#include "elf/sparc.h" +#include "elf/v850.h" #include "elf/external.h" #include "elf/internal.h" @@ -81,19 +94,22 @@ char dump_sects [NUM_DUMP_SECTS]; /* Forward declarations for dumb compilers. */ static const char * get_mips_dynamic_type PARAMS ((unsigned long type)); static const char * get_dynamic_type PARAMS ((unsigned long type)); -static char * get_i386_rel_type PARAMS ((unsigned long rtype)); -static char * get_m68k_rel_type PARAMS ((unsigned long rtype)); -static char * get_sparc_rel_type PARAMS ((unsigned long rtype)); -static char * get_m32r_rel_type PARAMS ((unsigned long rtype)); -static char * get_v850_rel_type PARAMS ((unsigned long rtype)); -static char * get_d10v_rel_type PARAMS ((unsigned long rtype)); +static const char * get_i386_rel_type PARAMS ((unsigned long rtype)); +static const char * get_m68k_rel_type PARAMS ((unsigned long rtype)); +static const char * get_sparc_rel_type PARAMS ((unsigned long rtype)); +static const char * get_m32r_rel_type PARAMS ((unsigned long rtype)); +static const char * get_v850_rel_type PARAMS ((unsigned long rtype)); +static const char * get_d10v_rel_type PARAMS ((unsigned long rtype)); /* start-sanitize-d30v */ -static char * get_d30v_rel_type PARAMS ((unsigned long rtype)); +static const char * get_d30v_rel_type PARAMS ((unsigned long rtype)); /* end-sanitize-d30v */ -static char * get_sh_rel_type PARAMS ((unsigned long rtype)); -static char * get_mn10300_rel_type PARAMS ((unsigned long rtype)); -static char * get_mn10200_rel_type PARAMS ((unsigned long rtype)); -static char * get_ppc_rel_type PARAMS ((unsigned long rtype)); +static const char * get_sh_rel_type PARAMS ((unsigned long rtype)); +static const char * get_mn10300_rel_type PARAMS ((unsigned long rtype)); +static const char * get_mn10200_rel_type PARAMS ((unsigned long rtype)); +static const char * get_ppc_rel_type PARAMS ((unsigned long rtype)); +static const char * get_mips_rel_type PARAMS ((unsigned long rtype)); +static const char * get_alpha_rel_type PARAMS ((unsigned long rtype)); +static const char * get_arm_rel_type PARAMS ((unsigned long rtype)); static int dump_relocations PARAMS ((FILE *, unsigned long, unsigned long, Elf_Internal_Sym *, char *)); static char * get_file_type PARAMS ((unsigned e_type)); @@ -102,7 +118,8 @@ static char * get_machine_data PARAMS ((unsigned e_data)); static char * get_machine_flags PARAMS ((unsigned, unsigned e_machine)); static const char * get_mips_segment_type PARAMS ((unsigned long type)); static const char * get_segment_type PARAMS ((unsigned long p_type)); -static char * get_section_type_name PARAMS ((unsigned int sh_type)); +static const char * get_mips_section_type_name PARAMS ((unsigned int sh_type)); +static const char * get_section_type_name PARAMS ((unsigned int sh_type)); static char * get_symbol_binding PARAMS ((unsigned int binding)); static char * get_symbol_type PARAMS ((unsigned int type)); static void usage PARAMS ((void)); @@ -278,351 +295,437 @@ byte_get_big_endian (field, size) } } -static char * +static const char * get_i386_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_386_NONE"; - case 1: return "R_386_32"; - case 2: return "R_386_PC32"; - case 3: return "R_386_GOT32"; - case 4: return "R_386_PLT32"; - case 5: return "R_386_COPY"; - case 6: return "R_386_GLOB_DAT"; - case 7: return "R_386_JMP_SLOT"; - case 8: return "R_386_RELATIVE"; - case 9: return "R_386_GOTOFF"; - case 10: return "R_386_GOTPC"; - case 20: return "R_386_16"; - case 21: return "R_386_PC16"; - case 22: return "R_386_PC8"; - case 23: return "R_386_max"; + case R_386_NONE: return "R_386_NONE"; + case R_386_32: return "R_386_32"; + case R_386_PC32: return "R_386_PC32"; + case R_386_GOT32: return "R_386_GOT32"; + case R_386_PLT32: return "R_386_PLT32"; + case R_386_COPY: return "R_386_COPY"; + case R_386_GLOB_DAT: return "R_386_GLOB_DAT"; + case R_386_JMP_SLOT: return "R_386_JMP_SLOT"; + case R_386_RELATIVE: return "R_386_RELATIVE"; + case R_386_GOTOFF: return "R_386_GOTOFF"; + case R_386_GOTPC: return "R_386_GOTPC"; + case R_386_16: return "R_386_16"; + case R_386_PC16: return "R_386_PC16"; + case R_386_PC8: return "R_386_PC8"; default: return _("*INVALID*"); } } -static char * +static const char * get_m68k_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_68K_NONE"; - case 1: return "R_68K_32"; - case 2: return "R_68K_16"; - case 3: return "R_68K_8"; - case 4: return "R_68K_PC32"; - case 5: return "R_68K_PC16"; - case 6: return "R_68K_PC8"; - case 7: return "R_68K_GOT32"; - case 8: return "R_68K_GOT16"; - case 9: return "R_68K_GOT8"; - case 10: return "R_68K_GOT32O"; - case 11: return "R_68K_GOT16O"; - case 12: return "R_68K_GOT8O"; - case 13: return "R_68K_PLT32"; - case 14: return "R_68K_PLT16"; - case 15: return "R_68K_PLT8"; - case 16: return "R_68K_PLT32O"; - case 17: return "R_68K_PLT16O"; - case 18: return "R_68K_PLT8O"; - case 19: return "R_68K_COPY"; - case 20: return "R_68K_GLOB_DAT"; - case 21: return "R_68K_JMP_SLOT"; - case 22: return "R_68K_RELATIVE"; + case R_68K_NONE: return "R_68K_NONE"; + case R_68K_32: return "R_68K_32"; + case R_68K_16: return "R_68K_16"; + case R_68K_8: return "R_68K_8"; + case R_68K_PC32: return "R_68K_PC32"; + case R_68K_PC16: return "R_68K_PC16"; + case R_68K_PC8: return "R_68K_PC8"; + case R_68K_GOT32: return "R_68K_GOT32"; + case R_68K_GOT16: return "R_68K_GOT16"; + case R_68K_GOT8: return "R_68K_GOT8"; + case R_68K_GOT32O: return "R_68K_GOT32O"; + case R_68K_GOT16O: return "R_68K_GOT16O"; + case R_68K_GOT8O: return "R_68K_GOT8O"; + case R_68K_PLT32: return "R_68K_PLT32"; + case R_68K_PLT16: return "R_68K_PLT16"; + case R_68K_PLT8: return "R_68K_PLT8"; + case R_68K_PLT32O: return "R_68K_PLT32O"; + case R_68K_PLT16O: return "R_68K_PLT16O"; + case R_68K_PLT8O: return "R_68K_PLT8O"; + case R_68K_COPY: return "R_68K_COPY"; + case R_68K_GLOB_DAT: return "R_68K_GLOB_DAT"; + case R_68K_JMP_SLOT: return "R_68K_JMP_SLOT"; + case R_68K_RELATIVE: return "R_68K_RELATIVE"; default: return _("*INVALID*"); } } -static char * +static const char * get_sparc_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_SPARC_NONE"; - case 1: return "R_SPARC_8"; - case 2: return "R_SPARC_16"; - case 3: return "R_SPARC_32"; - case 4: return "R_SPARC_DISP8"; - case 5: return "R_SPARC_DISP16"; - case 6: return "R_SPARC_DISP32"; - case 7: return "R_SPARC_WDISP30"; - case 8: return "R_SPARC_WDISP22"; - case 9: return "R_SPARC_HI22"; - case 10: return "R_SPARC_22"; - case 11: return "R_SPARC_13"; - case 12: return "R_SPARC_LO10"; - case 13: return "R_SPARC_GOT10"; - case 14: return "R_SPARC_GOT13"; - case 15: return "R_SPARC_GOT22"; - case 16: return "R_SPARC_PC10"; - case 17: return "R_SPARC_PC22"; - case 18: return "R_SPARC_WPLT30"; - case 19: return "R_SPARC_COPY"; - case 20: return "R_SPARC_GLOB_DAT"; - case 21: return "R_SPARC_JMP_SLOT"; - case 22: return "R_SPARC_RELATIVE"; - case 23: return "R_SPARC_UA32"; - case 24: return "R_SPARC_10"; - case 25: return "R_SPARC_11"; - case 26: return "R_SPARC_64"; - case 27: return "R_SPARC_OLO10"; - case 28: return "R_SPARC_HH22"; - case 29: return "R_SPARC_HM10"; - case 30: return "R_SPARC_LM22"; - case 31: return "R_SPARC_PC_HH22"; - case 32: return "R_SPARC_PC_HM10"; - case 33: return "R_SPARC_PC_LM22"; - case 34: return "R_SPARC_WDISP16"; - case 35: return "R_SPARC_WDISP19"; - case 36: return "R_SPARC_UNUSED_42"; - case 37: return "R_SPARC_7"; - case 38: return "R_SPARC_5"; - case 39: return "R_SPARC_6"; - case 40: return "R_SPARC_DISP64"; - case 41: return "R_SPARC_PLT64"; - case 42: return "R_SPARC_HIX22"; - case 43: return "R_SPARC_LOX10"; - case 44: return "R_SPARC_H44"; - case 45: return "R_SPARC_M44"; - case 46: return "R_SPARC_L44"; - case 47: return "R_SPARC_REGISTER"; - case 48: return "R_SPARC_UA64"; - case 49: return "R_SPARC_UA16"; - case 50: return "R_SPARC_32LE"; + case R_SPARC_NONE: return "R_SPARC_NONE"; + case R_SPARC_8: return "R_SPARC_8"; + case R_SPARC_16: return "R_SPARC_16"; + case R_SPARC_32: return "R_SPARC_32"; + case R_SPARC_DISP8: return "R_SPARC_DISP8"; + case R_SPARC_DISP16: return "R_SPARC_DISP16"; + case R_SPARC_DISP32: return "R_SPARC_DISP32"; + case R_SPARC_WDISP30: return "R_SPARC_WDISP30"; + case R_SPARC_WDISP22: return "R_SPARC_WDISP22"; + case R_SPARC_HI22: return "R_SPARC_HI22"; + case R_SPARC_22: return "R_SPARC_22"; + case R_SPARC_13: return "R_SPARC_13"; + case R_SPARC_LO10: return "R_SPARC_LO10"; + case R_SPARC_GOT10: return "R_SPARC_GOT10"; + case R_SPARC_GOT13: return "R_SPARC_GOT13"; + case R_SPARC_GOT22: return "R_SPARC_GOT22"; + case R_SPARC_PC10: return "R_SPARC_PC10"; + case R_SPARC_PC22: return "R_SPARC_PC22"; + case R_SPARC_WPLT30: return "R_SPARC_WPLT30"; + case R_SPARC_COPY: return "R_SPARC_COPY"; + case R_SPARC_GLOB_DAT: return "R_SPARC_GLOB_DAT"; + case R_SPARC_JMP_SLOT: return "R_SPARC_JMP_SLOT"; + case R_SPARC_RELATIVE: return "R_SPARC_RELATIVE"; + case R_SPARC_UA32: return "R_SPARC_UA32"; + case R_SPARC_10: return "R_SPARC_10"; + case R_SPARC_11: return "R_SPARC_11"; + case R_SPARC_64: return "R_SPARC_64"; + case R_SPARC_OLO10: return "R_SPARC_OLO10"; + case R_SPARC_HH22: return "R_SPARC_HH22"; + case R_SPARC_HM10: return "R_SPARC_HM10"; + case R_SPARC_LM22: return "R_SPARC_LM22"; + case R_SPARC_PC_HH22: return "R_SPARC_PC_HH22"; + case R_SPARC_PC_HM10: return "R_SPARC_PC_HM10"; + case R_SPARC_PC_LM22: return "R_SPARC_PC_LM22"; + case R_SPARC_WDISP16: return "R_SPARC_WDISP16"; + case R_SPARC_WDISP19: return "R_SPARC_WDISP19"; + case R_SPARC_UNUSED_42: return "R_SPARC_UNUSED_42"; + case R_SPARC_7: return "R_SPARC_7"; + case R_SPARC_5: return "R_SPARC_5"; + case R_SPARC_6: return "R_SPARC_6"; + case R_SPARC_DISP64: return "R_SPARC_DISP64"; + case R_SPARC_PLT64: return "R_SPARC_PLT64"; + case R_SPARC_HIX22: return "R_SPARC_HIX22"; + case R_SPARC_LOX10: return "R_SPARC_LOX10"; + case R_SPARC_H44: return "R_SPARC_H44"; + case R_SPARC_M44: return "R_SPARC_M44"; + case R_SPARC_L44: return "R_SPARC_L44"; + case R_SPARC_REGISTER: return "R_SPARC_REGISTER"; + case R_SPARC_UA64: return "R_SPARC_UA64"; + case R_SPARC_UA16: return "R_SPARC_UA16"; default: return _("*INVALID*"); } } -static char * +static const char * get_m32r_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_M32R_NONE"; - case 1: return "R_M32R_16"; - case 2: return "R_M32R_32"; - case 3: return "R_M32R_24"; - case 4: return "R_M32R_10_PCREL"; - case 5: return "R_M32R_18_PCREL"; - case 6: return "R_M32R_26_PCREL"; - case 7: return "R_M32R_HI16_ULO"; - case 8: return "R_M32R_HI16_SLO"; - case 9: return "R_M32R_LO16"; - case 10: return "R_M32R_SDA16"; + case R_M32R_NONE: return "R_M32R_NONE"; + case R_M32R_16: return "R_M32R_16"; + case R_M32R_32: return "R_M32R_32"; + case R_M32R_24: return "R_M32R_24"; + case R_M32R_10_PCREL: return "R_M32R_10_PCREL"; + case R_M32R_18_PCREL: return "R_M32R_18_PCREL"; + case R_M32R_26_PCREL: return "R_M32R_26_PCREL"; + case R_M32R_HI16_ULO: return "R_M32R_HI16_ULO"; + case R_M32R_HI16_SLO: return "R_M32R_HI16_SLO"; + case R_M32R_LO16: return "R_M32R_LO16"; + case R_M32R_SDA16: return "R_M32R_SDA16"; default: return _("*INVALID*"); } } -static char * +static const char * get_v850_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_V850_NONE"; - case 1: return "R_V850_9_PCREL"; - case 2: return "R_V850_22_PCREL"; - case 3: return "R_V850_HI16_S"; - case 4: return "R_V850_HI16"; - case 5: return "R_V850_LO16"; - case 6: return "R_V850_32"; - case 7: return "R_V850_16"; - case 8: return "R_V850_8"; - case 9: return "R_V850_SDA_16_16_OFFSET"; - case 10: return "R_V850_SDA_15_16_OFFSET"; - case 11: return "R_V850_ZDA_16_16_OFFSET"; - case 12: return "R_V850_ZDA_15_16_OFFSET"; - case 13: return "R_V850_TDA_6_8_OFFSET"; - case 14: return "R_V850_TDA_7_8_OFFSET"; - case 15: return "R_V850_TDA_7_7_OFFSET"; - case 16: return "R_V850_TDA_16_16_OFFSET"; + case R_V850_NONE: return "R_V850_NONE"; + case R_V850_9_PCREL: return "R_V850_9_PCREL"; + case R_V850_22_PCREL: return "R_V850_22_PCREL"; + case R_V850_HI16_S: return "R_V850_HI16_S"; + case R_V850_HI16: return "R_V850_HI16"; + case R_V850_LO16: return "R_V850_LO16"; + case R_V850_32: return "R_V850_32"; + case R_V850_16: return "R_V850_16"; + case R_V850_8: return "R_V850_8"; + case R_V850_SDA_16_16_OFFSET: return "R_V850_SDA_16_16_OFFSET"; + case R_V850_SDA_15_16_OFFSET: return "R_V850_SDA_15_16_OFFSET"; + case R_V850_ZDA_16_16_OFFSET: return "R_V850_ZDA_16_16_OFFSET"; + case R_V850_ZDA_15_16_OFFSET: return "R_V850_ZDA_15_16_OFFSET"; + case R_V850_TDA_6_8_OFFSET: return "R_V850_TDA_6_8_OFFSET"; + case R_V850_TDA_7_8_OFFSET: return "R_V850_TDA_7_8_OFFSET"; + case R_V850_TDA_7_7_OFFSET: return "R_V850_TDA_7_7_OFFSET"; + case R_V850_TDA_16_16_OFFSET: return "R_V850_TDA_16_16_OFFSET"; /* start-sanitize-v850e */ - case 17: return "R_V850_TDA_4_5_OFFSET"; - case 18: return "R_V850_TDA_4_4_OFFSET"; - case 19: return "R_V850_SDA_16_16_SPLIT_OFFSET"; - case 20: return "R_V850_ZDA_16_16_SPLIT_OFFSET"; - case 21: return "R_V850_CALLT_6_7_OFFSET"; - case 22: return "R_V850_CALLT_16_16_OFFSET"; + case R_V850_TDA_4_5_OFFSET: return "R_V850_TDA_4_5_OFFSET"; + case R_V850_TDA_4_4_OFFSET: return "R_V850_TDA_4_4_OFFSET"; + case R_V850_SDA_16_16_SPLIT_OFFSET: return "R_V850_SDA_16_16_SPLIT_OFFSET"; + case R_V850_ZDA_16_16_SPLIT_OFFSET: return "R_V850_ZDA_16_16_SPLIT_OFFSET"; + case R_V850_CALLT_6_7_OFFSET: return "R_V850_CALLT_6_7_OFFSET"; + case R_V850_CALLT_16_16_OFFSET: return "R_V850_CALLT_16_16_OFFSET"; /* end-sanitize-v850e */ default: return _("*INVALID*"); } } -static char * +static const char * get_d10v_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_D10V_NONE"; - case 1: return "R_D10V_10_PCREL_R"; - case 2: return "R_D10V_10_PCREL_L"; - case 3: return "R_D10V_16"; - case 4: return "R_D10V_18"; - case 5: return "R_D10V_18_PCREL"; - case 6: return "R_D10V_32"; + case R_D10V_NONE: return "R_D10V_NONE"; + case R_D10V_10_PCREL_R: return "R_D10V_10_PCREL_R"; + case R_D10V_10_PCREL_L: return "R_D10V_10_PCREL_L"; + case R_D10V_16: return "R_D10V_16"; + case R_D10V_18: return "R_D10V_18"; + case R_D10V_18_PCREL: return "R_D10V_18_PCREL"; + case R_D10V_32: return "R_D10V_32"; default: return _("*INVALID*"); } } /* start-sanitize-d30v */ -static char * +static const char * get_d30v_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_D30V_NONE"; - case 1: return "R_D30V_6"; - case 2: return "R_D30V_9_PCREL"; - case 3: return "R_D30V_9_PCREL_R"; - case 4: return "R_D30V_15"; - case 5: return "R_D30V_15_PCREL"; - case 6: return "R_D30V_15_PCREL_R"; - case 7: return "R_D30V_21"; - case 8: return "R_D30V_21_PCREL"; - case 9: return "R_D30V_21_PCREL_R"; - case 10: return "R_D30V_32"; - case 11: return "R_D30V_32_PCREL"; - case 12: return "R_D30V_32_NORMAL"; + case R_D30V_NONE: return "R_D30V_NONE"; + case R_D30V_6: return "R_D30V_6"; + case R_D30V_9_PCREL: return "R_D30V_9_PCREL"; + case R_D30V_9_PCREL_R: return "R_D30V_9_PCREL_R"; + case R_D30V_15: return "R_D30V_15"; + case R_D30V_15_PCREL: return "R_D30V_15_PCREL"; + case R_D30V_15_PCREL_R: return "R_D30V_15_PCREL_R"; + case R_D30V_21: return "R_D30V_21"; + case R_D30V_21_PCREL: return "R_D30V_21_PCREL"; + case R_D30V_21_PCREL_R: return "R_D30V_21_PCREL_R"; + case R_D30V_32: return "R_D30V_32"; + case R_D30V_32_PCREL: return "R_D30V_32_PCREL"; + case R_D30V_32_NORMAL: return "R_D30V_32_NORMAL"; default: return _("*INVALID*"); } } /* end-sanitize-d30v */ -static char * +static const char * get_sh_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_SH_NONE"; - case 1: return "R_SH_DIR32"; - case 2: return "R_SH_REL32"; - case 3: return "R_SH_DIR8WPN"; - case 4: return "R_SH_IND12W"; - case 5: return "R_SH_DIR8WPL"; - case 6: return "R_SH_DIR8WPZ"; - case 7: return "R_SH_DIR8BP"; - case 8: return "R_SH_DIR8W"; - case 9: return "R_SH_DIR8L"; - case 25: return "R_SH_SWITCH16"; - case 26: return "R_SH_SWITCH32"; - case 27: return "R_SH_USES"; - case 28: return "R_SH_COUNT"; - case 29: return "R_SH_ALIGN"; - case 30: return "R_SH_CODE"; - case 31: return "R_SH_DATA"; - case 32: return "R_SH_LABEL"; + case R_SH_NONE: return "R_SH_NONE"; + case R_SH_DIR32: return "R_SH_DIR32"; + case R_SH_REL32: return "R_SH_REL32"; + case R_SH_DIR8WPN: return "R_SH_DIR8WPN"; + case R_SH_IND12W: return "R_SH_IND12W"; + case R_SH_DIR8WPL: return "R_SH_DIR8WPL"; + case R_SH_DIR8WPZ: return "R_SH_DIR8WPZ"; + case R_SH_DIR8BP: return "R_SH_DIR8BP"; + case R_SH_DIR8W: return "R_SH_DIR8W"; + case R_SH_DIR8L: return "R_SH_DIR8L"; + case R_SH_SWITCH16: return "R_SH_SWITCH16"; + case R_SH_SWITCH32: return "R_SH_SWITCH32"; + case R_SH_USES: return "R_SH_USES"; + case R_SH_COUNT: return "R_SH_COUNT"; + case R_SH_ALIGN: return "R_SH_ALIGN"; + case R_SH_CODE: return "R_SH_CODE"; + case R_SH_DATA: return "R_SH_DATA"; + case R_SH_LABEL: return "R_SH_LABEL"; default: return _("*INVALID*"); } } -static char * +static const char * get_mn10300_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_MN10300_NONE"; - case 1: return "R_MN10300_32"; - case 2: return "R_MN10300_16"; - case 3: return "R_MN10300_8"; - case 4: return "R_MN10300_PCREL32"; - case 5: return "R_MN10300_PCREL16"; - case 6: return "R_MN10300_PCREL8"; + case R_MN10300_NONE: return "R_MN10300_NONE"; + case R_MN10300_32: return "R_MN10300_32"; + case R_MN10300_16: return "R_MN10300_16"; + case R_MN10300_8: return "R_MN10300_8"; + case R_MN10300_PCREL32: return "R_MN10300_PCREL32"; + case R_MN10300_PCREL16: return "R_MN10300_PCREL16"; + case R_MN10300_PCREL8: return "R_MN10300_PCREL8"; default: return _("*INVALID*"); } } -static char * +static const char * get_mn10200_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_MN10200_NONE"; - case 1: return "R_MN10200_32"; - case 2: return "R_MN10200_16"; - case 3: return "R_MN10200_8"; - case 4: return "R_MN10200_24"; - case 5: return "R_MN10200_PCREL8"; - case 6: return "R_MN10200_PCREL16"; - case 7: return "R_MN10200_PCREL24"; + case R_MN10200_NONE: return "R_MN10200_NONE"; + case R_MN10200_32: return "R_MN10200_32"; + case R_MN10200_16: return "R_MN10200_16"; + case R_MN10200_8: return "R_MN10200_8"; + case R_MN10200_24: return "R_MN10200_24"; + case R_MN10200_PCREL8: return "R_MN10200_PCREL8"; + case R_MN10200_PCREL16: return "R_MN10200_PCREL16"; + case R_MN10200_PCREL24: return "R_MN10200_PCREL24"; default: return _("*INVALID*"); } } -static char * +static const char * get_ppc_rel_type (rtype) unsigned long rtype; { switch (rtype) { - case 0: return "R_PPC_NONE,"; - case 1: return "R_PPC_ADDR32,"; - case 2: return "R_PPC_ADDR24,"; - case 3: return "R_PPC_ADDR16,"; - case 4: return "R_PPC_ADDR16_LO,"; - case 5: return "R_PPC_ADDR16_HI,"; - case 6: return "R_PPC_ADDR16_HA,"; - case 7: return "R_PPC_ADDR14,"; - case 8: return "R_PPC_ADDR14_BRTAKEN,"; - case 9: return "R_PPC_ADDR14_BRNTAKEN,"; - case 10: return "R_PPC_REL24,"; - case 11: return "R_PPC_REL14,"; - case 12: return "R_PPC_REL14_BRTAKEN,"; - case 13: return "R_PPC_REL14_BRNTAKEN,"; - case 14: return "R_PPC_GOT16,"; - case 15: return "R_PPC_GOT16_LO,"; - case 16: return "R_PPC_GOT16_HI,"; - case 17: return "R_PPC_GOT16_HA,"; - case 18: return "R_PPC_PLT24,"; - case 19: return "R_PPC_COPY,"; - case 21: return "R_PPC_JMP_SLOT,"; - case 22: return "R_PPC_RELATIVE,"; - case 23: return "R_PPC_LOCAL24PC,"; - case 24: return "R_PPC_UADDR32,"; - case 25: return "R_PPC_UADDR16,"; - case 26: return "R_PPC_REL32,"; - case 27: return "R_PPC_PLT32,"; - case 28: return "R_PPC_PLTREL32,"; - case 29: return "R_PPC_PLT16_LO,"; - case 30: return "R_PPC_PLT16_HI,"; - case 31: return "R_PPC_PLT16_HA,"; - case 32: return "R_PPC_SDAREL,"; - case 33: return "R_PPC_SECTOFF,"; - case 34: return "R_PPC_SECTOFF_LO,"; - case 35: return "R_PPC_SECTOFF_HI,"; - case 36: return "R_PPC_SECTOFF_HA,"; - case 101: return "R_PPC_EMB_NADDR32,"; - case 102: return "R_PPC_EMB_NADDR16,"; - case 103: return "R_PPC_EMB_NADDR16_LO,"; - case 104: return "R_PPC_EMB_NADDR16_HI,"; - case 105: return "R_PPC_EMB_NADDR16_HA,"; - case 106: return "R_PPC_EMB_SDAI16,"; - case 107: return "R_PPC_EMB_SDA2I16,"; - case 108: return "R_PPC_EMB_SDA2REL,"; - case 109: return "R_PPC_EMB_SDA21,"; - case 110: return "R_PPC_EMB_MRKREF,"; - case 111: return "R_PPC_EMB_RELSEC16,"; - case 112: return "R_PPC_EMB_RELST_LO,"; - case 113: return "R_PPC_EMB_RELST_HI,"; - case 114: return "R_PPC_EMB_RELST_HA,"; - case 115: return "R_PPC_EMB_BIT_FLD,"; - case 116: return "R_PPC_EMB_RELSDA,"; + case R_PPC_NONE: return "R_PPC_NONE"; + case R_PPC_ADDR32: return "R_PPC_ADDR32"; + case R_PPC_ADDR24: return "R_PPC_ADDR24"; + case R_PPC_ADDR16: return "R_PPC_ADDR16"; + case R_PPC_ADDR16_LO: return "R_PPC_ADDR16_LO"; + case R_PPC_ADDR16_HI: return "R_PPC_ADDR16_HI"; + case R_PPC_ADDR16_HA: return "R_PPC_ADDR16_HA"; + case R_PPC_ADDR14: return "R_PPC_ADDR14"; + case R_PPC_ADDR14_BRTAKEN: return "R_PPC_ADDR14_BRTAKEN"; + case R_PPC_ADDR14_BRNTAKEN: return "R_PPC_ADDR14_BRNTAKEN"; + case R_PPC_REL24: return "R_PPC_REL24"; + case R_PPC_REL14: return "R_PPC_REL14"; + case R_PPC_REL14_BRTAKEN: return "R_PPC_REL14_BRTAKEN"; + case R_PPC_REL14_BRNTAKEN: return "R_PPC_REL14_BRNTAKEN"; + case R_PPC_GOT16: return "R_PPC_GOT16"; + case R_PPC_GOT16_LO: return "R_PPC_GOT16_LO"; + case R_PPC_GOT16_HI: return "R_PPC_GOT16_HI"; + case R_PPC_GOT16_HA: return "R_PPC_GOT16_HA"; + case R_PPC_PLTREL24: return "R_PPC_PLTREL24"; + case R_PPC_COPY: return "R_PPC_COPY"; + case R_PPC_GLOB_DAT: return "R_PPC_GLOB_DAT"; + case R_PPC_JMP_SLOT: return "R_PPC_JMP_SLOT"; + case R_PPC_RELATIVE: return "R_PPC_RELATIVE"; + case R_PPC_LOCAL24PC: return "R_PPC_LOCAL24PC"; + case R_PPC_UADDR32: return "R_PPC_UADDR32"; + case R_PPC_UADDR16: return "R_PPC_UADDR16"; + case R_PPC_REL32: return "R_PPC_REL32"; + case R_PPC_PLT32: return "R_PPC_PLT32"; + case R_PPC_PLTREL32: return "R_PPC_PLTREL32"; + case R_PPC_PLT16_LO: return "R_PPC_PLT16_LO"; + case R_PPC_PLT16_HI: return "R_PPC_PLT16_HI"; + case R_PPC_PLT16_HA: return "R_PPC_PLT16_HA"; + case R_PPC_SDAREL16: return "R_PPC_SDAREL16"; + case R_PPC_SECTOFF: return "R_PPC_SECTOFF"; + case R_PPC_SECTOFF_LO: return "R_PPC_SECTOFF_LO"; + case R_PPC_SECTOFF_HI: return "R_PPC_SECTOFF_HI"; + case R_PPC_SECTOFF_HA: return "R_PPC_SECTOFF_HA"; + case R_PPC_EMB_NADDR32: return "R_PPC_EMB_NADDR32"; + case R_PPC_EMB_NADDR16: return "R_PPC_EMB_NADDR16"; + case R_PPC_EMB_NADDR16_LO: return "R_PPC_EMB_NADDR16_LO"; + case R_PPC_EMB_NADDR16_HI: return "R_PPC_EMB_NADDR16_HI"; + case R_PPC_EMB_NADDR16_HA: return "R_PPC_EMB_NADDR16_HA"; + case R_PPC_EMB_SDAI16: return "R_PPC_EMB_SDAI16"; + case R_PPC_EMB_SDA2I16: return "R_PPC_EMB_SDA2I16"; + case R_PPC_EMB_SDA2REL: return "R_PPC_EMB_SDA2REL"; + case R_PPC_EMB_SDA21: return "R_PPC_EMB_SDA21"; + case R_PPC_EMB_MRKREF: return "R_PPC_EMB_MRKREF"; + case R_PPC_EMB_RELSEC16: return "R_PPC_EMB_RELSEC16"; + case R_PPC_EMB_RELST_LO: return "R_PPC_EMB_RELST_LO"; + case R_PPC_EMB_RELST_HI: return "R_PPC_EMB_RELST_HI"; + case R_PPC_EMB_RELST_HA: return "R_PPC_EMB_RELST_HA"; + case R_PPC_EMB_BIT_FLD: return "R_PPC_EMB_BIT_FLD"; + case R_PPC_EMB_RELSDA: return "R_PPC_EMB_RELSDA"; + case R_PPC_TOC16: return "R_PPC_TOC16"; + default: return _("*INVALID*"); + } +} + + +static const char * +get_mips_rel_type (rtype) + unsigned long rtype; +{ + switch (rtype) + { + case R_MIPS_NONE: return "R_MIPS_NONE"; + case R_MIPS_16: return "R_MIPS_16"; + case R_MIPS_32: return "R_MIPS_32"; + case R_MIPS_REL32: return "R_MIPS_REL32"; + case R_MIPS_26: return "R_MIPS_26"; + case R_MIPS_HI16: return "R_MIPS_HI16"; + case R_MIPS_LO16: return "R_MIPS_LO16"; + case R_MIPS_GPREL16: return "R_MIPS_GPREL16"; + case R_MIPS_LITERAL: return "R_MIPS_LITERAL"; + case R_MIPS_GOT16: return "R_MIPS_GOT16"; + case R_MIPS_PC16: return "R_MIPS_PC16"; + case R_MIPS_CALL16: return "R_MIPS_CALL16"; + case R_MIPS_GPREL32: return "R_MIPS_GPREL32"; + default: return _("*INVALID*"); + } +} + + +static const char * +get_alpha_rel_type (rtype) + unsigned long rtype; +{ + switch (rtype) + { + case R_ALPHA_NONE: return "R_ALPHA_NONE"; + case R_ALPHA_REFLONG: return "R_ALPHA_REFLONG"; + case R_ALPHA_REFQUAD: return "R_ALPHA_REFQUAD"; + case R_ALPHA_GPREL32: return "R_ALPHA_GPREL32"; + case R_ALPHA_LITERAL: return "R_ALPHA_LITERAL"; + case R_ALPHA_LITUSE: return "R_ALPHA_LITUSE"; + case R_ALPHA_GPDISP: return "R_ALPHA_GPDISP"; + case R_ALPHA_BRADDR: return "R_ALPHA_BRADDR"; + case R_ALPHA_HINT: return "R_ALPHA_HINT"; + case R_ALPHA_SREL16: return "R_ALPHA_SREL16"; + case R_ALPHA_SREL32: return "R_ALPHA_SREL32"; + case R_ALPHA_SREL64: return "R_ALPHA_SREL64"; + case R_ALPHA_OP_PUSH: return "R_ALPHA_OP_PUSH"; + case R_ALPHA_OP_STORE: return "R_ALPHA_OP_STORE"; + case R_ALPHA_OP_PSUB: return "R_ALPHA_OP_PSUB"; + case R_ALPHA_OP_PRSHIFT: return "R_ALPHA_OP_PRSHIFT"; + case R_ALPHA_GPVALUE: return "R_ALPHA_GPVALUE"; + case R_ALPHA_GPRELHIGH: return "R_ALPHA_GPRELHIGH"; + case R_ALPHA_GPRELLOW: return "R_ALPHA_GPRELLOW"; + case R_ALPHA_IMMED_GP_16: return "R_ALPHA_IMMED_GP_16"; + case R_ALPHA_IMMED_GP_HI32: return "R_ALPHA_IMMED_GP_HI32"; + case R_ALPHA_IMMED_SCN_HI32: return "R_ALPHA_IMMED_SCN_HI32"; + case R_ALPHA_IMMED_BR_HI32: return "R_ALPHA_IMMED_BR_HI32"; + case R_ALPHA_IMMED_LO32: return "R_ALPHA_IMMED_LO32"; + case R_ALPHA_COPY: return "R_ALPHA_COPY"; + case R_ALPHA_GLOB_DAT: return "R_ALPHA_GLOB_DAT"; + case R_ALPHA_JMP_SLOT: return "R_ALPHA_JMP_SLOT"; + case R_ALPHA_RELATIVE: return "R_ALPHA_RELATIVE"; + default: return _("*INVALID*"); + } +} + + +static const char * +get_arm_rel_type (rtype) + unsigned long rtype; +{ + switch (rtype) + { + case R_ARM_NONE: return "R_ARM_NONE"; + case R_ARM_PC24: return "R_ARM_PC24"; + case R_ARM_ABS32: return "R_ARM_ABS32"; + case R_ARM_REL32: return "R_ARM_REL32"; + case R_ARM_COPY: return "R_ARM_COPY"; + case R_ARM_GLOB_DAT: return "R_ARM_GLOB_DAT"; + case R_ARM_JUMP_SLOT: return "R_ARM_JUMP_SLOT"; + case R_ARM_RELATIVE: return "R_ARM_RELATIVE"; + case R_ARM_GOTOFF: return "R_ARM_GOTOFF"; + case R_ARM_GOTPC: return "R_ARM_GOTPC"; + case R_ARM_GOT32: return "R_ARM_GOT32"; + case R_ARM_PLT32: return "R_ARM_PLT32"; default: return _("*INVALID*"); } } @@ -651,6 +754,9 @@ dump_relocations (file, rel_offset, rel_size, symtab, strtab) case EM_486: case EM_CYGNUS_M32R: case EM_CYGNUS_D10V: + case EM_MIPS: + case EM_MIPS_RS4_BE: + case EM_ARM: { Elf32_External_Rel * erels; @@ -685,6 +791,7 @@ dump_relocations (file, rel_offset, rel_size, symtab, strtab) case EM_CYGNUS_MN10200: case EM_CYGNUS_MN10300: case EM_SH: + case EM_ALPHA: { Elf32_External_Rela * erelas; @@ -717,14 +824,14 @@ dump_relocations (file, rel_offset, rel_size, symtab, strtab) if (is_rela) printf - (_(" Offset Value Type Symbol's Value Symbol's Name Addend\n")); + (_(" Offset Value Type Symbol's Value Symbol's Name Addend\n")); else printf (_(" Offset Value Type Symbol's Value Symbol's Name\n")); for (i = 0; i < rel_size; i++) { - char * rtype; + const char * rtype; unsigned long offset; unsigned long info; int symtab_index; @@ -794,6 +901,19 @@ dump_relocations (file, rel_offset, rel_size, symtab, strtab) case EM_PPC: rtype = get_ppc_rel_type (ELF32_R_TYPE (info)); break; + + case EM_MIPS: + case EM_MIPS_RS4_BE: + rtype = get_mips_rel_type (ELF32_R_TYPE (info)); + break; + + case EM_ALPHA: + rtype = get_alpha_rel_type (ELF32_R_TYPE (info)); + break; + + case EM_ARM: + rtype = get_arm_rel_type (ELF32_R_TYPE (info)); + break; } printf ("%-21.21s", rtype); @@ -809,12 +929,12 @@ dump_relocations (file, rel_offset, rel_size, symtab, strtab) printf (" %08lx ", (unsigned long) psym->st_value); if (psym->st_name == 0) - printf ("%-17.17s", + printf ("%-25.25s", SECTION_NAME (section_headers + psym->st_shndx)); else if (strtab == NULL) - printf (_(""), psym->st_name); + printf (_(""), psym->st_name); else - printf ("%-17.17s", strtab + psym->st_name); + printf ("%-25.25s", strtab + psym->st_name); if (is_rela) printf (" + %lx", (unsigned long) relas [i].r_addend); @@ -955,11 +1075,11 @@ get_file_type (e_type) switch (e_type) { - case ET_NONE: return _("None"); - case ET_REL: return _("Relocatable file"); - case ET_EXEC: return _("Executable file"); - case ET_DYN: return _("Shared object file"); - case ET_CORE: return _("Core file"); + case ET_NONE: return _("NONE (None)"); + case ET_REL: return _("REL (Relocatable file)"); + case ET_EXEC: return _("EXEC (Executable file)"); + case ET_DYN: return _("DYN (Shared object file)"); + case ET_CORE: return _("CORE (Core file)"); default: if ((e_type >= ET_LOPROC) && (e_type <= ET_HIPROC)) @@ -981,14 +1101,14 @@ get_machine_name (e_machine) case EM_NONE: return _("None"); case EM_M32: return "WE32100"; case EM_SPARC: return "Sparc"; - case EM_386: return "80386"; + case EM_386: return "Intel 80386"; case EM_68K: return "MC68000"; case EM_88K: return "MC88000"; case EM_486: return "Intel 80486"; case EM_860: return "Intel 80860"; case EM_MIPS: return "MIPS R3000 big-endian"; case EM_S370: return "Amdahl"; - case EM_MIPS_RS4_BE: return "MIPS R400 big-endian"; + case EM_MIPS_RS4_BE: return "MIPS R4000 big-endian"; case EM_OLD_SPARCV9: return "Sparc v9 (old)"; case EM_PARISC: return "HPPA"; case EM_PPC_OLD: return "Power PC (old)"; @@ -1112,14 +1232,16 @@ get_mips_segment_type (type) switch (type) { case PT_MIPS_REGINFO: - return "Register Info"; + return "REGINFO"; case PT_MIPS_RTPROC: - return "Runtime Proc Table"; + return "RTPROC"; case PT_MIPS_OPTIONS: - return "Options"; + return "OPTIONS"; default: - return "Processor Specific"; + break; } + + return NULL; } static const char * @@ -1130,24 +1252,35 @@ get_segment_type (p_type) switch (p_type) { - case PT_NULL: return _("Unused"); - case PT_LOAD: return _("Loadable"); - case PT_DYNAMIC: return _("Dynamic link info"); - case PT_INTERP: return _("Interpreter"); - case PT_NOTE: return _("Auxillary Info"); - case PT_SHLIB: return _("Shared Library"); - case PT_PHDR: return _("Program Header"); + case PT_NULL: return "NULL"; + case PT_LOAD: return "LOAD"; + case PT_DYNAMIC: return "DYNAMIC"; + case PT_INTERP: return "INTERP"; + case PT_NOTE: return "NOTE"; + case PT_SHLIB: return "SHLIB"; + case PT_PHDR: return "PHDR"; default: if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC)) - switch (elf_header.e_machine) - { - case EM_MIPS: - case EM_MIPS_RS4_BE: - return get_mips_segment_type (p_type); - default: - return "Processor Specific"; - } + { + const char *result; + switch (elf_header.e_machine) + { + case EM_MIPS: + case EM_MIPS_RS4_BE: + result = get_mips_segment_type (p_type); + break; + default: + result = NULL; + break; + } + if (result == NULL) + { + sprintf (buff, "LOPROC+%d", p_type - PT_LOPROC); + result = buff; + } + return result; + } else { sprintf (buff, _(": %x"), p_type); @@ -1156,7 +1289,97 @@ get_segment_type (p_type) } } -static char * +static const char * +get_mips_section_type_name (sh_type) + unsigned int sh_type; +{ + switch (sh_type) + { + case SHT_MIPS_LIBLIST: + return "MIPS_LIBLIST"; + case SHT_MIPS_MSYM: + return "MIPS_MSYM"; + case SHT_MIPS_CONFLICT: + return "MIPS_CONFLICT"; + case SHT_MIPS_GPTAB: + return "MIPS_GPTAB"; + case SHT_MIPS_UCODE: + return "MIPS_UCODE"; + case SHT_MIPS_DEBUG: + return "MIPS_DEBUG"; + case SHT_MIPS_REGINFO: + return "MIPS_REGINFO"; + case SHT_MIPS_PACKAGE: + return "MIPS_PACKAGE"; + case SHT_MIPS_PACKSYM: + return "MIPS_PACKSYM"; + case SHT_MIPS_RELD: + return "MIPS_RELD"; + case SHT_MIPS_IFACE: + return "MIPS_IFACE"; + case SHT_MIPS_CONTENT: + return "MIPS_CONTENT"; + case SHT_MIPS_OPTIONS: + return "MIPS_OPTIONS"; + case SHT_MIPS_SHDR: + return "MIPS_SHDR"; + case SHT_MIPS_FDESC: + return "MIPS_FDESC"; + case SHT_MIPS_EXTSYM: + return "MIPS_EXTSYM"; + case SHT_MIPS_DENSE: + return "MIPS_DENSE"; + case SHT_MIPS_PDESC: + return "MIPS_PDESC"; + case SHT_MIPS_LOCSYM: + return "MIPS_LOCSYM"; + case SHT_MIPS_AUXSYM: + return "MIPS_AUXSYM"; + case SHT_MIPS_OPTSYM: + return "MIPS_OPTSYM"; + case SHT_MIPS_LOCSTR: + return "MIPS_LOCSTR"; + case SHT_MIPS_LINE: + return "MIPS_LINE"; + case SHT_MIPS_RFDESC: + return "MIPS_RFDESC"; + case SHT_MIPS_DELTASYM: + return "MIPS_DELTASYM"; + case SHT_MIPS_DELTAINST: + return "MIPS_DELTAINST"; + case SHT_MIPS_DELTACLASS: + return "MIPS_DELTACLASS"; + case SHT_MIPS_DWARF: + return "MIPS_DWARF"; + case SHT_MIPS_DELTADECL: + return "MIPS_DELTADECL"; + case SHT_MIPS_SYMBOL_LIB: + return "MIPS_SYMBOL_LIB"; + case SHT_MIPS_EVENTS: + return "MIPS_EVENTS"; + case SHT_MIPS_TRANSLATE: + return "MIPS_TRANSLATE"; + case SHT_MIPS_PIXIE: + return "MIPS_PIXIE"; + case SHT_MIPS_XLATE: + return "MIPS_XLATE"; + case SHT_MIPS_XLATE_DEBUG: + return "MIPS_XLATE_DEBUG"; + case SHT_MIPS_WHIRL: + return "MIPS_WHIRL"; + case SHT_MIPS_EH_REGION: + return "MIPS_EH_REGION"; + case SHT_MIPS_XLATE_OLD: + return "MIPS_XLATE_OLD"; + case SHT_MIPS_PDR_EXCEPTION: + return "MIPS_PDR_EXCEPTION"; + default: + break; + } + return NULL; +} + +static const char * get_section_type_name (sh_type) unsigned int sh_type; { @@ -1164,21 +1387,21 @@ get_section_type_name (sh_type) switch (sh_type) { - case SHT_NULL: return _("Unused"); - case SHT_PROGBITS: return _("Program data"); - case SHT_SYMTAB: return _("Symbol table"); - case SHT_STRTAB: return _("String table"); - case SHT_RELA: return _("Relocations"); - case SHT_HASH: return _("Symbol hashes"); - case SHT_DYNAMIC: return _("Dynamic info"); - case SHT_NOTE: return _("Notes"); - case SHT_NOBITS: return _("Space, no data"); - case SHT_REL: return _("Relocations"); - case SHT_SHLIB: return _("Shared lib info"); - case SHT_DYNSYM: return _("Dynamic symbols"); - case SHT_GNU_verdef: return _("Version definition"); - case SHT_GNU_verneed: return _("Version needs"); - case SHT_GNU_versym: return _("Version symbols"); + case SHT_NULL: return "NULL"; + case SHT_PROGBITS: return "PROGBITS"; + case SHT_SYMTAB: return "SYMTAB"; + case SHT_STRTAB: return "STRTAB"; + case SHT_RELA: return "RELA"; + case SHT_HASH: return "HASH"; + case SHT_DYNAMIC: return "DYNAMIC"; + case SHT_NOTE: return "NOTE"; + case SHT_NOBITS: return "NOBITS"; + case SHT_REL: return "REL"; + case SHT_SHLIB: return "SHLIB"; + case SHT_DYNSYM: return "DYNSYM"; + case SHT_GNU_verdef: return "VERDEF"; + case SHT_GNU_verneed: return "VERNEED"; + case SHT_GNU_versym: return "VERSYM"; case 0x6ffffff0: return "VERSYM"; case 0x6ffffffc: return "VERDEF"; case 0x7ffffffd: return "AUXILIARY"; @@ -1186,9 +1409,29 @@ get_section_type_name (sh_type) default: if ((sh_type >= SHT_LOPROC) && (sh_type <= SHT_HIPROC)) - sprintf (buff, _("cpu defined (%d)"), sh_type - SHT_LOPROC); + { + const char *result; + + switch (elf_header.e_machine) + { + case EM_MIPS: + case EM_MIPS_RS4_BE: + result = get_mips_section_type_name (sh_type); + break; + default: + result = NULL; + break; + } + + if (result == NULL) + { + sprintf (buff, _("SHT_LOPROC+%d"), sh_type - SHT_LOPROC); + result = buff; + } + return result; + } else if ((sh_type >= SHT_LOUSER) && (sh_type <= SHT_HIUSER)) - sprintf (buff, _("app defined (%d)"), sh_type - SHT_LOUSER); + sprintf (buff, _("SHT_LOUSER+%d"), sh_type - SHT_LOUSER); else sprintf (buff, _(": %x"), sh_type); return buff; @@ -1476,7 +1719,7 @@ process_program_headers (file) printf (_("\nProgram Header%s:\n"), elf_header.e_phnum > 1 ? "s" : ""); printf - (_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n")); + (_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n")); } loadaddr = -1; @@ -1488,7 +1731,7 @@ process_program_headers (file) { if (do_segments) { - printf (" %-16.16s ", get_segment_type (segment->p_type)); + printf (" %-11.11s ", get_segment_type (segment->p_type)); printf ("0x%5.5lx ", (unsigned long) segment->p_offset); printf ("0x%8.8lx ", (unsigned long) segment->p_vaddr); printf ("0x%8.8lx ", (unsigned long) segment->p_paddr); @@ -2860,7 +3103,7 @@ process_symbol_table (file) printf (_("\nSymbol table '%s' contains %d entries:\n"), SECTION_NAME (section), section->sh_size / section->sh_entsize); - fputs (_(" Num: Value Size Type Bind Ot Ndx Name\n"), + fputs (_(" Num: Value Size Type Bind Ot Ndx Name\n"), stdout); symtab = get_elf_symbols (file, section->sh_offset, @@ -2893,13 +3136,13 @@ process_symbol_table (file) psym->st_other); if (psym->st_shndx == 0) - fputs ("UND", stdout); + fputs (" UND", stdout); else if ((psym->st_shndx & 0xffff) == 0xfff1) - fputs ("ABS", stdout); + fputs (" ABS", stdout); else if ((psym->st_shndx & 0xffff) == 0xfff2) - fputs ("COM", stdout); + fputs (" COM", stdout); else - printf ("%3d", psym->st_shndx); + printf ("%4x", psym->st_shndx); printf (" %s", strtab + psym->st_name); @@ -3412,7 +3655,7 @@ process_mips_specific (file) len = sizeof (*eopt); while (len < option->size) if (((char *) option)[len] >= ' ' - && ((char *) option)[len++] < 0x7f) + && ((char *) option)[len] < 0x7f) printf ("%c", ((char *) option)[len++]); else printf ("\\%03o", ((char *) option)[len++]); -- 2.30.2