aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-02-05 16:19:17 +1030
committerAlan Modra <amodra@gmail.com>2020-02-06 13:57:37 +1030
commit02e0be69012aee9aac0c7adbba1b0516b4dc9218 (patch)
treef254f35a15e747f8f6775349b2bf29ca7ce478aa
parentb88237bc21d0e847d5c8808bfd9a789ed213cfb2 (diff)
downloadgdb-02e0be69012aee9aac0c7adbba1b0516b4dc9218.zip
gdb-02e0be69012aee9aac0c7adbba1b0516b4dc9218.tar.gz
gdb-02e0be69012aee9aac0c7adbba1b0516b4dc9218.tar.bz2
mbind gas tests and supports_gnu_osabi testsuite infrastructure
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.
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/testsuite/lib/binutils-common.exp59
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/testsuite/gas/elf/section12a.d5
-rw-r--r--gas/testsuite/gas/elf/section12b.d5
-rw-r--r--gas/testsuite/gas/elf/section16a.d5
-rw-r--r--gas/testsuite/gas/elf/section16b.d5
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/testsuite/ld-unique/unique.exp2
-rw-r--r--ld/testsuite/lib/ld-lib.exp12
10 files changed, 71 insertions, 43 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6214de9..7dc97db 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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.
diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index a253c01..57b94f5 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -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.
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b8c8864..ef7a8ee 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/testsuite/gas/elf/section12a.d b/gas/testsuite/gas/elf/section12a.d
index 84c032f..1580161 100644
--- a/gas/testsuite/gas/elf/section12a.d
+++ b/gas/testsuite/gas/elf/section12a.d
@@ -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
diff --git a/gas/testsuite/gas/elf/section12b.d b/gas/testsuite/gas/elf/section12b.d
index 847f9a8..98a4b95 100644
--- a/gas/testsuite/gas/elf/section12b.d
+++ b/gas/testsuite/gas/elf/section12b.d
@@ -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:
diff --git a/gas/testsuite/gas/elf/section16a.d b/gas/testsuite/gas/elf/section16a.d
index d1abf57..0d66475 100644
--- a/gas/testsuite/gas/elf/section16a.d
+++ b/gas/testsuite/gas/elf/section16a.d
@@ -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
diff --git a/gas/testsuite/gas/elf/section16b.d b/gas/testsuite/gas/elf/section16b.d
index a146c0d..9014fab 100644
--- a/gas/testsuite/gas/elf/section16b.d
+++ b/gas/testsuite/gas/elf/section16b.d
@@ -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:
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3ad29e5..21f51c9 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
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.
(i[3-7]86-*-openbsd*, x86_64-*-openbsd*): Add.
diff --git a/ld/testsuite/ld-unique/unique.exp b/ld/testsuite/ld-unique/unique.exp
index 5457deb..1f80b39 100644
--- a/ld/testsuite/ld-unique/unique.exp
+++ b/ld/testsuite/ld-unique/unique.exp
@@ -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
}
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 6752a76..bed5add 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -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-*-*"]