2003-09-29 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 30 Sep 2003 00:15:54 +0000 (00:15 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 30 Sep 2003 00:15:54 +0000 (00:15 +0000)
* readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON.
(get_symbol_index_type): Likewise.

testsuites/

2003-09-29  H.J. Lu  <hongjiu.lu@intel.com>

* 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
binutils/readelf.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/readelf.exp
binutils/testsuite/binutils-all/readelf.h
binutils/testsuite/binutils-all/readelf.s
binutils/testsuite/binutils-all/readelf.ss
binutils/testsuite/lib/utils-lib.exp

index c8315e9b4c1de6b0ac57fc2d11ac25ddff7333d1..ad5937a685084777ad14f9d99281120861b41f57 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON.
+       (get_symbol_index_type): Likewise.
+
 2003-09-25  H.J. Lu  <hongjiu.lu@intel.com>
 
        * readelf.c (process_version_sections): Indent version names.
index 30e9533977bb6b88cb2164e307345a79a81d540f..520b736395baabcc1ba54fd056e3249c1a3c8293 100644 (file)
@@ -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, "<section 0x%x>",
@@ -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);
index d3655a78c1fc5f8489c9a91df1ccdba1ad760039..77d3a3eb04583ae960fcf1ed00c242399718703d 100644 (file)
@@ -1,3 +1,14 @@
+2003-09-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * 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  <dannysmith@users.sourceforge.net>
 
        * binutils-all/objcopy.exp: Initialise $test_prog to
index 7eb544bac4defd2b0bc51bb571b8cacc18571f12..4c5f99e9279991f3bcca0990d4733a4c86edf323 100644 (file)
@@ -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
 }
index 810eab5eab16fb20c4e12a945f9e64dc8d13b0ce..01103fbab3997aa266409c87dc45249384423452 100644 (file)
@@ -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\)
index e3995f44ef78eed44a45075533c72080656637c7..985a48bf7733c76866b5c52fb8a139ecaab31d55 100644 (file)
@@ -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.
 #...
index 4c8bf8c874d425ad6b1da1ef8dab73e99a0b9485..325403dd68fe73a45c860f8c803edf5b0ea1c611 100644 (file)
@@ -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
index 54c59dee0c095db5c9a8dd96d8ca47e3937a6adf..11860f7c476cd78e45488a20221b651c8be5f20f 100644 (file)
@@ -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
+}