mbind gas tests and supports_gnu_osabi testsuite infrastructure
authorAlan Modra <amodra@gmail.com>
Wed, 5 Feb 2020 05:49:17 +0000 (16:19 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 6 Feb 2020 03:27:37 +0000 (13:57 +1030)
With the addition of section16 tests we have multiple tests
advertising themselves as "mbind sections" and "mbind section
contents".  This patch fixes that, and fails on quite a few targets
that force an OSABI value.  It's a pain specifying all the relevant
arm targets on an xfail line, so I wrote supports_gnu_osabi.

binutils/
* testsuite/lib/binutils-common.exp (match_target): Accept '!' before
TCL procedure.
(supports_gnu_osabi): New procedure.
(is_generic): New, from ld-lib.exp.
(supports_gnu_unique): Use the above.
gas/
* testsuite/gas/elf/section12a.d: Use supports_gnu_osabi in
xfail, and rename test.
* testsuite/gas/elf/section12b.d: Likewise.
* testsuite/gas/elf/section16a.d: Likewise.
* testsuite/gas/elf/section16b.d: Likewise.
ld/
* testsuite/lib/ld-lib.exp (is_generic): Delete.
* testsuite/ld-unique/unique.exp: Exclude tic6x.

binutils/ChangeLog
binutils/testsuite/lib/binutils-common.exp
gas/ChangeLog
gas/testsuite/gas/elf/section12a.d
gas/testsuite/gas/elf/section12b.d
gas/testsuite/gas/elf/section16a.d
gas/testsuite/gas/elf/section16b.d
ld/ChangeLog
ld/testsuite/ld-unique/unique.exp
ld/testsuite/lib/ld-lib.exp

index 6214de979eb928df235bd5ba0e326a66c4258a12..7dc97dbd85c7e95792732c0e1c7cb7b619046bb0 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-06  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/lib/binutils-common.exp (match_target): Accept '!' before
+       TCL procedure.
+       (supports_gnu_osabi): New procedure.
+       (is_generic): New, from ld-lib.exp.
+       (supports_gnu_unique): Use the above.
+
 2020-02-04  Alan Modra  <amodra@gmail.com>
 
        * Makefile.am (CFILES): Add od-elf32_avr.c.
index a253c01a5cad2fc2c45813983f1aeeffc53b97d1..57b94f528a71b14dc7605cf944285de4b514bcb8 100644 (file)
@@ -171,32 +171,38 @@ proc is_rela { binary_file } {
 # in square brackets or as machine triplet otherwise.
 #
 proc match_target { target } {
-   if [string match {\[*\]} $target] {
+   if [regexp {^!?\[.*\]$} $target] {
        return $target
    } else {
        return [istarget $target]
    }
 }
 
-# True if the ELF target supports STB_GNU_UNIQUE with the ELF header's
-# OSABI field set to ELFOSABI_GNU.
+# True if the ELF target supports setting the ELF header OSABI field
+# to ELFOSABI_GNU or ELFOSABI_FREEBSD, a requirement for STT_GNU_IFUNC
+# symbol and SHF_GNU_MBIND section support.
 #
 # This generally depends on the target OS only, however there are a
 # number of exceptions for bare metal targets as follows.  The MSP430
-# and Visium targets set OSABI to ELFOSABI_STANDALONE and cannot
-# support STB_GNU_UNIQUE.  Likewise non-EABI ARM targets set OSABI to
-# ELFOSABI_ARM, and TI C6X targets to ELFOSABI_C6000_*.  Finally
-# rather than `bfd_elf_final_link' a number of targets use
-# `_bfd_generic_final_link', which does not support STB_GNU_UNIQUE
-# symbol binding causing assertion failures.
+# and Visium targets set OSABI to ELFOSABI_STANDALONE.  Likewise
+# non-EABI ARM targets set OSABI to ELFOSABI_ARM
 #
-proc supports_gnu_unique {} {
+# Note that some TI C6X targets use ELFOSABI_C6000_* but one doesn't,
+# so we don't try to sort out tic6x here.  (The effect is that linker
+# testcases will generally need to exclude tic6x or use a -m option.)
+#
+proc supports_gnu_osabi {} {
     if { [istarget *-*-gnu*]
         || [istarget *-*-linux*]
-        || [istarget *-*-nacl*] } {
-       return 1
-    }
-    if { [istarget "arm*-*-*eabi*"] } {
+        || [istarget *-*-nacl*]
+        || ( [istarget *-*-*bsd*] && ![istarget arm*-*-netbsd*] )
+        || [istarget *-*-symbianelf]
+        || [istarget *-*-lynxos]
+        || ( [istarget *-*-nto*] && ![istarget arm*-*-*] )
+        || [istarget *-*-irix*]
+        || [istarget *-*-*eabi*]
+        || [istarget *-*-rtems*]
+        || [istarget *-*-solaris*] } {
        return 1
     }
     if { [istarget "wasm32*-*-*"] } {
@@ -207,19 +213,36 @@ proc supports_gnu_unique {} {
     }
     if { [istarget "arm*-*-*"]
         || [istarget "msp430-*-*"]
-        || [istarget "tic6x-*-*"]
         || [istarget "visium-*-*"] } {
        return 0
     }
-    if { [istarget "am33_2.0-*-*"]
-        || [istarget "d30v-*-*"]
+    return 1
+}
+
+# Return true if target uses the generic_link_hash_table linker.
+proc is_generic { } {
+    if { [istarget "d30v-*-*"]
         || [istarget "dlx-*-*"]
         || [istarget "pj*-*-*"]
         || [istarget "s12z-*-*"]
         || [istarget "xgate-*-*"] } {
+       return 1
+    }
+    return 0
+}
+
+# True if the ELF target supports STB_GNU_UNIQUE.
+#
+# This require ELFOSABI_GNU, and `bfd_elf_final_link'.
+#
+proc supports_gnu_unique {} {
+    if { [istarget *-*-freebsd*] } {
        return 0
     }
-    return 1
+    if { [supports_gnu_osabi] && ![is_generic] } {
+       return 1
+    }
+    return 0
 }
 
 # True for targets that do not sort .symtab as per the ELF standard.
index b8c886421e88ece73b9d29c91fe4705c388d3ac4..ef7a8eeb4a8e9e77f3ebf5403d77c606e3c95a9a 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-06  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/gas/elf/section12a.d: Use supports_gnu_osabi in
+       xfail, and rename test.
+       * testsuite/gas/elf/section12b.d: Likewise.
+       * testsuite/gas/elf/section16a.d: Likewise.
+       * testsuite/gas/elf/section16b.d: Likewise.
+
 2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR gas/25380
index 84c032f90e05cb12ebe632bff4959426c9364d35..15801617d58dfd1653d7d4029f9f0b8b6a1c592a 100644 (file)
@@ -1,10 +1,9 @@
 #source: section12.s
 #as: --no-pad-sections
 #readelf: -Sg --wide
-#name: mbind sections
+#name: mbind sections 12
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-*
-#xfail: *-*-hpux* *-*-cloudabi
+#xfail: ![supports_gnu_osabi]
 
 #...
   \[[ 0-9]+\] \.mbind\.data[   ]+PROGBITS[     ]+0+0 0+[0-9a-f]+ 0+1 00 WAD  0   0  1
index 847f9a8a18c79313fc1d721d8c7fadc910453118..98a4b9521d7d1d5f61246118b240b862cc82471d 100644 (file)
@@ -1,13 +1,12 @@
 #source: section12.s
 #as: --no-pad-sections
 #objdump: -s
-#name: mbind section contents
+#name: mbind section contents 16
 # RX annoyingly reorders the sections so that they do not match the sequence
 # expected below.
 #xfail: rx-*-*
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-*
-#xfail: *-*-hpux* *-*-cloudabi
+#xfail: ![supports_gnu_osabi]
 
 #...
 Contents of section .mbind.data:
index d1abf570c61717efdfd6fd1273ba9a65cd8d5623..0d664752d8d1af37b1200548db7d72ba614c33d5 100644 (file)
@@ -1,10 +1,9 @@
 #source: section16.s
 #as: --no-pad-sections
 #readelf: -Sg --wide
-#name: mbind sections
+#name: mbind sections 16
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-*
-#xfail: *-*-hpux* *-*-cloudabi
+#xfail: ![supports_gnu_osabi]
 
 #...
   \[[ 0-9]+\] \.mbind\.data[   ]+PROGBITS[     ]+0+0 0+[0-9a-f]+ 0+1 00 WAD  0   0  1
index a146c0de7e18186302bc1eea394be194a86e65ca..9014fab9e7b3b4a1eb795d1b1dc14145e1f10c66 100644 (file)
@@ -1,13 +1,12 @@
 #source: section16.s
 #as: --no-pad-sections
 #objdump: -s
-#name: mbind section contents
+#name: mbind section contents 16
 # RX annoyingly reorders the sections so that they do not match the sequence
 # expected below.
 #xfail: rx-*-*
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-*
-#xfail: *-*-hpux* *-*-cloudabi
+#xfail: ![supports_gnu_osabi]
 
 #...
 Contents of section .mbind.data:
index 3ad29e52621da5eceba20f48c3eb5b20aaa709f9..21f51c98b2e7c685f09b3b8f4e44277d53e645d8 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-06  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/lib/ld-lib.exp (is_generic): Delete.
+       * testsuite/ld-unique/unique.exp: Exclude tic6x.
+
 2020-02-06  Alan Modra  <amodra@gmail.com>
 
        * configure.tgt (i[3-7]86-*-moss*): Don't clear targ_extra_ofiles.
index 5457deb4ece590e1843957075defcb367f00a4c6..1f80b39c05b43069edae317db7e2f6ca1780d318 100644 (file)
@@ -30,7 +30,7 @@ if { ![is_elf_format] } {
 }
 
 # Require STB_GNU_UNIQUE support with OSABI set to GNU.
-if { ![supports_gnu_unique] } {
+if { ![supports_gnu_unique] || [istarget tic6x-*-*] } {
     verbose "UNIQUE tests not run - target does not support UNIQUE"
     return
 }
index 6752a76483a96ac0e80466384a36f0bb5725b2eb..bed5add77f01a9a15967138e514fc6b0be436d9d 100644 (file)
@@ -1088,18 +1088,6 @@ proc check_gc_sections_available { } {
     return $gc_sections_available_saved
 }
 
-# Return true if target uses the generic_link_hash_table linker.
-proc is_generic { } {
-    if { [istarget "d30v-*-*"]
-        || [istarget "dlx-*-*"]
-        || [istarget "pj*-*-*"]
-        || [istarget "s12z-*-*"]
-        || [istarget "xgate-*-*"] } {
-       return 1
-    }
-    return 0
-}
-
 # Return true if target uses genelf.em.
 proc uses_genelf { } {
     if { [istarget "d30v-*-*"]