From 9ce701e24f12fd90b3f6de659aa614f5d17efbf7 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 30 Sep 2003 00:15:54 +0000 Subject: [PATCH] 2003-09-29 H.J. Lu * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON. (get_symbol_index_type): Likewise. testsuites/ 2003-09-29 H.J. Lu * binutils-all/readelf.exp: Use is_elf_format. * binutils-all/readelf.h: Support IA64/ILP32. * binutils-all/readelf.s: Likewise. * binutils-all/readelf.ss: Likewise. * lib/utils-lib.exp (proc is_elf_format): Copy from ld testsuite. Add ia64-*-hpux*. --- binutils/ChangeLog | 5 +++ binutils/readelf.c | 10 +++++- binutils/testsuite/ChangeLog | 11 ++++++ binutils/testsuite/binutils-all/readelf.exp | 21 ++---------- binutils/testsuite/binutils-all/readelf.h | 2 +- binutils/testsuite/binutils-all/readelf.s | 6 ++-- binutils/testsuite/binutils-all/readelf.ss | 2 +- binutils/testsuite/lib/utils-lib.exp | 38 +++++++++++++++++++++ 8 files changed, 70 insertions(+), 25 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index c8315e9b4c..ad5937a685 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2003-09-29 H.J. Lu + + * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON. + (get_symbol_index_type): Likewise. + 2003-09-25 H.J. Lu * readelf.c (process_version_sections): Indent version names. diff --git a/binutils/readelf.c b/binutils/readelf.c index 30e9533977..520b736395 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1194,6 +1194,10 @@ dump_relocations (FILE *file, sec_name = "ABS"; else if (psym->st_shndx == SHN_COMMON) sec_name = "COMMON"; + else if (elf_header.e_machine == EM_IA_64 + && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX + && psym->st_shndx == SHN_IA_64_ANSI_COMMON) + sec_name = "ANSI_COM"; else { sprintf (name_buf, "
", @@ -5550,7 +5554,11 @@ get_symbol_index_type (unsigned int type) case SHN_ABS: return "ABS"; case SHN_COMMON: return "COM"; default: - if (type >= SHN_LOPROC && type <= SHN_HIPROC) + if (type == SHN_IA_64_ANSI_COMMON + && elf_header.e_machine == EM_IA_64 + && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX) + return "ANSI_COM"; + else if (type >= SHN_LOPROC && type <= SHN_HIPROC) sprintf (buff, "PRC[0x%04x]", type); else if (type >= SHN_LOOS && type <= SHN_HIOS) sprintf (buff, "OS [0x%04x]", type); diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog index d3655a78c1..77d3a3eb04 100644 --- a/binutils/testsuite/ChangeLog +++ b/binutils/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2003-09-29 H.J. Lu + + * binutils-all/readelf.exp: Use is_elf_format. + + * binutils-all/readelf.h: Support IA64/ILP32. + * binutils-all/readelf.s: Likewise. + * binutils-all/readelf.ss: Likewise. + + * lib/utils-lib.exp (proc is_elf_format): Copy from ld + testsuite. Add ia64-*-hpux*. + 2003-06-29 Danny Smith * binutils-all/objcopy.exp: Initialise $test_prog to diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp index 7eb544bac4..4c5f99e927 100644 --- a/binutils/testsuite/binutils-all/readelf.exp +++ b/binutils/testsuite/binutils-all/readelf.exp @@ -303,25 +303,8 @@ proc readelf_wi_test {} { } -# Only ELF based toolchains need readelf. -# For now be paranoid and assume that if ELF is not mentioned -# in the target string, then the target is not an ELF based port. - -if { ![istarget *-*-elf*] \ - && ![istarget *-*-linux*] \ - && ![istarget i?86-*-sysv4*] \ - && ![istarget i?86-*-unixware] \ - && ![istarget mips*-*-irix5*] \ - && ![istarget mips*-*-irix6*] \ - && ![istarget powerpc-*-sysv4*] \ - && ![istarget powerpc-*-eabi*] \ - && ![istarget sparc*-*-solaris2*] } { - verbose "$READELF is only intended for ELF targets" 2 - return -} - -if { [istarget *-*-linux*oldld*] \ - || [istarget *-*-linux*aout*] } { +# Exclude non-ELF targets. +if ![is_elf_format] { verbose "$READELF is only intended for ELF targets" 2 return } diff --git a/binutils/testsuite/binutils-all/readelf.h b/binutils/testsuite/binutils-all/readelf.h index 810eab5eab..01103fbab3 100644 --- a/binutils/testsuite/binutils-all/readelf.h +++ b/binutils/testsuite/binutils-all/readelf.h @@ -1,5 +1,5 @@ ELF Header: - Magic: 7f 45 4c 46 0[12] 0[12] 01 .. 00 00 00 00 00 00 00 00 + Magic: 7f 45 4c 46 0[12] 0[12] 01 .. .. 00 00 00 00 00 00 00 Class: ELF[36][24] Data: 2's complement,.* endian Version: 1 \(current\) diff --git a/binutils/testsuite/binutils-all/readelf.s b/binutils/testsuite/binutils-all/readelf.s index e3995f44ef..985a48bf77 100644 --- a/binutils/testsuite/binutils-all/readelf.s +++ b/binutils/testsuite/binutils-all/readelf.s @@ -4,13 +4,13 @@ Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 +0 +0 +0 # On the normal MIPS systems, sections must be aligned to 16 byte -# boundaries. +# boundaries. On IA64, text sections are aligned to 16 byte boundaries. \[ 1\] .text PROGBITS 00000000 0000(34|40) 0000(08|10) 00 +AX +0 +0 +(.|..) \[ 2\] .rel.+text +REL. +0+ 0+.* 00000. 0. +. +1 +4 # MIPS targets put .rela.text here. #... - \[ .\] .data PROGBITS 00000000 0000(3c|50) 0000(04|10) 00 WA +0 +0 +(.|..) - \[ .\] .bss NOBITS 00000000 0000(4|6)0 000000 00 WA +0 +0 +(.|..) + \[ .\] .data PROGBITS 00000000 0000(3c|48|50) 0000(04|10) 00 WA +0 +0 +(.|..) + \[ .\] .bss NOBITS 00000000 0000(40|4c|60) 000000 00 WA +0 +0 +(.|..) # MIPS targets put .reginfo and .mdebug here. # v850 targets put .call_table_data and .call_table_text here. #... diff --git a/binutils/testsuite/binutils-all/readelf.ss b/binutils/testsuite/binutils-all/readelf.ss index 4c8bf8c874..325403dd68 100644 --- a/binutils/testsuite/binutils-all/readelf.ss +++ b/binutils/testsuite/binutils-all/readelf.ss @@ -13,4 +13,4 @@ Symbol table '.symtab' contains .* entries: .* .: 00000000 0 NOTYPE GLOBAL DEFAULT 1 text_symbol .: 00000000 0 NOTYPE GLOBAL DEFAULT UND external_symbol ..: 00000000 0 NOTYPE GLOBAL DEFAULT 3 data_symbol - ..: 00000004 4 OBJECT GLOBAL DEFAULT COM common_symbol + ..: 00000004 4 OBJECT GLOBAL DEFAULT ( COM|ANSI_COM) common_symbol diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp index 54c59dee0c..11860f7c47 100644 --- a/binutils/testsuite/lib/utils-lib.exp +++ b/binutils/testsuite/lib/utils-lib.exp @@ -111,3 +111,41 @@ proc default_binutils_assemble { source object } { return 0 } } + +# +# is_elf_format +# true if the object format is known to be ELF +# +proc is_elf_format {} { + if { ![istarget *-*-sysv4*] \ + && ![istarget *-*-unixware*] \ + && ![istarget *-*-elf*] \ + && ![istarget *-*-eabi*] \ + && ![istarget hppa*64*-*-hpux*] \ + && ![istarget ia64-*-hpux*] \ + && ![istarget *-*-linux*] \ + && ![istarget *-*-irix5*] \ + && ![istarget *-*-irix6*] \ + && ![istarget *-*-netbsd*] \ + && ![istarget *-*-solaris2*] } { + return 0 + } + + if { [istarget *-*-linux*aout*] \ + || [istarget *-*-linux*oldld*] } { + return 0 + } + + if { ![istarget *-*-netbsdelf*] \ + && ([istarget *-*-netbsd*aout*] \ + || [istarget *-*-netbsdpe*] \ + || [istarget arm*-*-netbsd*] \ + || [istarget sparc-*-netbsd*] \ + || [istarget i*86-*-netbsd*] \ + || [istarget m68*-*-netbsd*] \ + || [istarget vax-*-netbsd*] \ + || [istarget ns32k-*-netbsd*]) } { + return 0 + } + return 1 +}