This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] Use `supports_gnu_unique' with the `unique_symbol' and `type' tests
- From: "Maciej W. Rozycki" <macro at imgtec dot com>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: <binutils at sourceware dot org>
- Date: Tue, 28 Jun 2016 13:21:36 +0100
- Subject: [PATCH] Use `supports_gnu_unique' with the `unique_symbol' and `type' tests
- Authentication-results: sourceware.org; auth=none
Complement commit a43942db49b0 ("LD/ELF: Unify STB_GNU_UNIQUE handling")
and use `supports_gnu_unique' with the `unique_symbol' and `type tests,
fixing failures like:
.../binutils/testsuite/binutils-all/unique.s: Assembler messages:
.../binutils/testsuite/binutils-all/unique.s:2: Error: symbol type "gnu_unique_object" is supported only by GNU targets
ERROR: .../binutils/testsuite/binutils-all/unique.s: assembly failed
UNRESOLVED: ar unique symbol in archive
.../binutils/ar -s -r -c tmpdir/artest.a tmpdir/unique.o
Executing on host: .../binutils/ar -s -r -c tmpdir/artest.a tmpdir/unique.o (timeout = 300)
.../binutils/ar: tmpdir/unique.o: No such file or directory
FAIL: ar unique symbol in archive
and:
.../gas/testsuite/gas/elf/type.s: Assembler messages:
.../gas/testsuite/gas/elf/type.s:30: Error: symbol type "gnu_unique_object" is supported only by GNU targets
../as-new: BFD (GNU Binutils) 2.26.51.20160628 internal error, aborting at .../gas/write.c:608 in size_seg
../as-new: Please report this bug.
.../gas/testsuite/../../binutils/readelf -s dump.o | grep "1 *\[FIONTCU\]" > dump.out
Executing on host: sh -c {.../gas/testsuite/../../binutils/readelf -s dump.o >readelf.out 2>gas.stderr} /dev/null (timeout = 300)
readelf: Error: dump.o: Failed to read file's magic number
FAIL: elf type list
on MIPS/FreeBSD targets:
mips-freebsd -FAIL: ar unique symbol in archive
mips-freebsd -FAIL: elf type list
mips64-freebsd -FAIL: ar unique symbol in archive
mips64-freebsd -FAIL: elf type list
mips64el-freebsd -FAIL: ar unique symbol in archive
mips64el-freebsd -FAIL: elf type list
mipsel-freebsd -FAIL: ar unique symbol in archive
mipsel-freebsd -FAIL: elf type list
binutils/
* testsuite/binutils-all/ar.exp: Use `supports_gnu_unique' with
the `unique_symbol' test.
gas/
* testsuite/gas/elf/elf.exp: Use `supports_gnu_unique' with the
`type' test.
---
Nick,
This has been regression-tested against the usual 162 targets. OK to
apply?
While testing this I've noticed an `alpha-unknown-freebsd4.7' progression
has gone and this is due to your recent change with commit 96037eb0b8c2
("Fix various binutils testsuite failures.") to exclude `alpha-*-*' from
`ar.exp' testing. I think it is too broad, I think only non-ELF (ECOFF)
Alpha targets might have problems with `ar.exp' (except for the GNU unique
feature, handled here) as these tests used to pass for ELF targets like
`alpha-linux', `alpha-netbsd' or said `alpha-unknown-freebsd4.7'. So I
think you have unnecessarily reduced coverage (assuming that any failures
for ECOFF were due to a shortcoming of that format rather than our bug).
I think updating the condition to say:
if { [istarget "alpha-*-*"] && ![is_elf_format] } then {
return
}
will do, however, unfortunately, I'm still busy with 2.27 clean-ups, so I
can't even afford machine cycles for testing this refined update to your
sledgehammer approach -- will you therefore please look into it yourself?
NB I have separate fixes for the assertion failure noted above and the
bug in the assertion message itself, and will post them later today, once
their final testing has completed.
Maciej
binutils-test-stb-gnu-unique.diff
Index: binutils/binutils/testsuite/binutils-all/ar.exp
===================================================================
--- binutils.orig/binutils/testsuite/binutils-all/ar.exp 2016-06-28 02:27:39.363846765 +0100
+++ binutils/binutils/testsuite/binutils-all/ar.exp 2016-06-28 11:02:06.035732560 +0100
@@ -619,8 +619,6 @@ delete_an_element
move_an_element
empty_archive
-if { [is_elf_format]
- && ![istarget "*-*-hpux*"]
- && ![istarget "msp*-*-*"] } {
+if { [is_elf_format] && [supports_gnu_unique] } {
unique_symbol
}
Index: binutils/gas/testsuite/gas/elf/elf.exp
===================================================================
--- binutils.orig/gas/testsuite/gas/elf/elf.exp 2016-06-28 02:27:51.197241615 +0100
+++ binutils/gas/testsuite/gas/elf/elf.exp 2016-06-28 11:02:06.081706122 +0100
@@ -184,12 +184,12 @@ if { [is_elf_format] } then {
# The non-eabi ARM ports sets it to ELFOSABI_ARM.
# So for these targets we cannot include an IFUNC symbol type
# in the symbol type test.
- # The Alpha FreeBSD target does not support unique objects.
+ # We also need to exclude targets that do not support unique objects.
if { [istarget "*-*-hpux*"]
- || [istarget "alpha*-*-*freebsd*"]
|| [istarget "arm*-*-*"]
|| [istarget "msp*-*-*"]
|| [istarget "visium-*-*"]
+ || ![supports_gnu_unique]
} then {
# hppa64 has a non-standard common directive
if { ![istarget "hppa64*-*-hpux*"] } then {