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.
This commit is contained in:
Alan Modra
2020-02-05 16:19:17 +10:30
parent b88237bc21
commit 02e0be6901
10 changed files with 71 additions and 43 deletions

View 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> 2020-02-04 Alan Modra <amodra@gmail.com>
* Makefile.am (CFILES): Add od-elf32_avr.c. * Makefile.am (CFILES): Add od-elf32_avr.c.

View File

@ -171,32 +171,38 @@ proc is_rela { binary_file } {
# in square brackets or as machine triplet otherwise. # in square brackets or as machine triplet otherwise.
# #
proc match_target { target } { proc match_target { target } {
if [string match {\[*\]} $target] { if [regexp {^!?\[.*\]$} $target] {
return $target return $target
} else { } else {
return [istarget $target] return [istarget $target]
} }
} }
# True if the ELF target supports STB_GNU_UNIQUE with the ELF header's # True if the ELF target supports setting the ELF header OSABI field
# OSABI field set to ELFOSABI_GNU. # 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 # This generally depends on the target OS only, however there are a
# number of exceptions for bare metal targets as follows. The MSP430 # number of exceptions for bare metal targets as follows. The MSP430
# and Visium targets set OSABI to ELFOSABI_STANDALONE and cannot # and Visium targets set OSABI to ELFOSABI_STANDALONE. Likewise
# support STB_GNU_UNIQUE. Likewise non-EABI ARM targets set OSABI to # non-EABI ARM targets set OSABI to ELFOSABI_ARM
# 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.
# #
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*] if { [istarget *-*-gnu*]
|| [istarget *-*-linux*] || [istarget *-*-linux*]
|| [istarget *-*-nacl*] } { || [istarget *-*-nacl*]
return 1 || ( [istarget *-*-*bsd*] && ![istarget arm*-*-netbsd*] )
} || [istarget *-*-symbianelf]
if { [istarget "arm*-*-*eabi*"] } { || [istarget *-*-lynxos]
|| ( [istarget *-*-nto*] && ![istarget arm*-*-*] )
|| [istarget *-*-irix*]
|| [istarget *-*-*eabi*]
|| [istarget *-*-rtems*]
|| [istarget *-*-solaris*] } {
return 1 return 1
} }
if { [istarget "wasm32*-*-*"] } { if { [istarget "wasm32*-*-*"] } {
@ -207,20 +213,37 @@ proc supports_gnu_unique {} {
} }
if { [istarget "arm*-*-*"] if { [istarget "arm*-*-*"]
|| [istarget "msp430-*-*"] || [istarget "msp430-*-*"]
|| [istarget "tic6x-*-*"]
|| [istarget "visium-*-*"] } { || [istarget "visium-*-*"] } {
return 0 return 0
} }
if { [istarget "am33_2.0-*-*"] return 1
|| [istarget "d30v-*-*"] }
# Return true if target uses the generic_link_hash_table linker.
proc is_generic { } {
if { [istarget "d30v-*-*"]
|| [istarget "dlx-*-*"] || [istarget "dlx-*-*"]
|| [istarget "pj*-*-*"] || [istarget "pj*-*-*"]
|| [istarget "s12z-*-*"] || [istarget "s12z-*-*"]
|| [istarget "xgate-*-*"] } { || [istarget "xgate-*-*"] } {
return 1
}
return 0 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
}
if { [supports_gnu_osabi] && ![is_generic] } {
return 1 return 1
} }
return 0
}
# True for targets that do not sort .symtab as per the ELF standard. # True for targets that do not sort .symtab as per the ELF standard.
# ie. any that have mips_elf32_be_vec, mips_elf32_le_vec, # ie. any that have mips_elf32_be_vec, mips_elf32_le_vec,

View 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> 2020-02-02 H.J. Lu <hongjiu.lu@intel.com>
PR gas/25380 PR gas/25380

View File

@ -1,10 +1,9 @@
#source: section12.s #source: section12.s
#as: --no-pad-sections #as: --no-pad-sections
#readelf: -Sg --wide #readelf: -Sg --wide
#name: mbind sections #name: mbind sections 12
# A number of targets do not support SHF_GNU_MBIND # A number of targets do not support SHF_GNU_MBIND
#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-* #xfail: ![supports_gnu_osabi]
#xfail: *-*-hpux* *-*-cloudabi
#... #...
\[[ 0-9]+\] \.mbind\.data[ ]+PROGBITS[ ]+0+0 0+[0-9a-f]+ 0+1 00 WAD 0 0 1 \[[ 0-9]+\] \.mbind\.data[ ]+PROGBITS[ ]+0+0 0+[0-9a-f]+ 0+1 00 WAD 0 0 1

View File

@ -1,13 +1,12 @@
#source: section12.s #source: section12.s
#as: --no-pad-sections #as: --no-pad-sections
#objdump: -s #objdump: -s
#name: mbind section contents #name: mbind section contents 16
# RX annoyingly reorders the sections so that they do not match the sequence # RX annoyingly reorders the sections so that they do not match the sequence
# expected below. # expected below.
#xfail: rx-*-* #xfail: rx-*-*
# A number of targets do not support SHF_GNU_MBIND # A number of targets do not support SHF_GNU_MBIND
#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-* #xfail: ![supports_gnu_osabi]
#xfail: *-*-hpux* *-*-cloudabi
#... #...
Contents of section .mbind.data: Contents of section .mbind.data:

View File

@ -1,10 +1,9 @@
#source: section16.s #source: section16.s
#as: --no-pad-sections #as: --no-pad-sections
#readelf: -Sg --wide #readelf: -Sg --wide
#name: mbind sections #name: mbind sections 16
# A number of targets do not support SHF_GNU_MBIND # A number of targets do not support SHF_GNU_MBIND
#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-* #xfail: ![supports_gnu_osabi]
#xfail: *-*-hpux* *-*-cloudabi
#... #...
\[[ 0-9]+\] \.mbind\.data[ ]+PROGBITS[ ]+0+0 0+[0-9a-f]+ 0+1 00 WAD 0 0 1 \[[ 0-9]+\] \.mbind\.data[ ]+PROGBITS[ ]+0+0 0+[0-9a-f]+ 0+1 00 WAD 0 0 1

View File

@ -1,13 +1,12 @@
#source: section16.s #source: section16.s
#as: --no-pad-sections #as: --no-pad-sections
#objdump: -s #objdump: -s
#name: mbind section contents #name: mbind section contents 16
# RX annoyingly reorders the sections so that they do not match the sequence # RX annoyingly reorders the sections so that they do not match the sequence
# expected below. # expected below.
#xfail: rx-*-* #xfail: rx-*-*
# A number of targets do not support SHF_GNU_MBIND # A number of targets do not support SHF_GNU_MBIND
#xfail: arm*-*-netbsdelf* arm*-*-nto* msp430-*-* visium-*-* #xfail: ![supports_gnu_osabi]
#xfail: *-*-hpux* *-*-cloudabi
#... #...
Contents of section .mbind.data: Contents of section .mbind.data:

View 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> 2020-02-06 Alan Modra <amodra@gmail.com>
* configure.tgt (i[3-7]86-*-moss*): Don't clear targ_extra_ofiles. * configure.tgt (i[3-7]86-*-moss*): Don't clear targ_extra_ofiles.

View File

@ -30,7 +30,7 @@ if { ![is_elf_format] } {
} }
# Require STB_GNU_UNIQUE support with OSABI set to GNU. # 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" verbose "UNIQUE tests not run - target does not support UNIQUE"
return return
} }

View File

@ -1088,18 +1088,6 @@ proc check_gc_sections_available { } {
return $gc_sections_available_saved 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. # Return true if target uses genelf.em.
proc uses_genelf { } { proc uses_genelf { } {
if { [istarget "d30v-*-*"] if { [istarget "d30v-*-*"]