Files
binutils-gdb/ld/testsuite/ld-scripts/weak.exp
Alan Modra 0749c73cf8 Re: Add some expected failures for bfin linker tests
After commit 7ade0f1582 I was seeing bfin-elf +XPASS: weak symbols,
and on looking into the bfin targets a little, discovered we have two
bfin-linux targets.  One, bfin-uclinux, is like bfin-elf in that
ld -m elf32bfin is the default, and the other, bfin-linux-uclibc where
ld -m elf32bfinfd is the default.  So putting bfin-*-*linux* in test
xfails or elsewhere is wrong.  We want bfin-*-linux* instead to just
select the fdpic bfin target.

This patch corrects wrong bfin target triples in the ld testsuite,
not just the recent change but others I'd added to xfails too.
It also fixes the bfin-linux-uclibc ld-elf/64ksec fail
2023-06-15 11:45:03 +09:30

78 lines
2.6 KiB
Plaintext

# Test weak symbols.
# By Ian Lance Taylor, Cygnus Solutions.
# Copyright (C) 1999-2023 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
set testname "weak symbols"
# This test only works for ELF targets and some PE targets.
# It ought to work for some a.out targets, but it doesn't.
if { [is_elf_format] } {
# hppa64 is incredibly broken
setup_xfail hppa64-*-*
# elf32bfinfd target complains about fixups in read-only sections
setup_xfail bfin-*-linux*
} elseif { [is_pecoff_format] } {
# Weak symbols are broken for most PE targets.
if { ![istarget aarch64-*-*]
&& ![istarget i?86-*-*]
&& ![istarget sh-*-*]
&& ![istarget x86_64-*-*] } {
setup_xfail *-*-*
}
} else {
unsupported $testname
return
}
if {! [ld_assemble $as $srcdir/$subdir/weak1.s tmpdir/weak1.o]
|| ! [ld_assemble $as $srcdir/$subdir/weak2.s tmpdir/weak2.o]} then {
# It's OK if .weak doesn't work on this target.
unsupported $testname
return
}
set saved_LDFLAGS "$LDFLAGS"
if { [is_pecoff_format] } then {
set LDFLAGS "$LDFLAGS --image-base 0"
}
set weak_regexp_big \
".*Contents of section .text:.*1000 00001008 0000200c 12121212 34343434.*Contents of section .data:.*2000 00001008 0000200c 56565656 78787878.*"
set weak_regexp_little \
".*Contents of section .text:.*1000 08100000 0c200000 12121212 34343434.*Contents of section .data:.*2000 08100000 0c200000 56565656 78787878.*"
if {! [ld_link $ld tmpdir/weak "$flags -T $srcdir/$subdir/weak.t tmpdir/weak1.o tmpdir/weak2.o"] } then {
fail $testname
} else {
set exec_output [run_host_cmd "$objdump" "-s tmpdir/weak"]
set exec_output [prune_warnings $exec_output]
verbose -log $exec_output
if {[regexp $weak_regexp_big $exec_output] \
|| [regexp $weak_regexp_little $exec_output] } then {
pass $testname
} else {
fail $testname
}
}
set LDFLAGS "$saved_LDFLAGS"