2001-01-01 Philip Blundell <philb@gnu.org>

* ld-undefined/weak-undef.exp: New test.
	* ld-undefined/weak-undef.s, ld-undefined/weak-undef.t: Supporting
	files for above.
This commit is contained in:
Phil Blundell 2001-01-01 14:54:03 +00:00
parent 4f38fc1c6c
commit 7dc542b23c
4 changed files with 71 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2001-01-01 Philip Blundell <philb@gnu.org>
* ld-undefined/weak-undef.exp: New test.
* ld-undefined/weak-undef.s, ld-undefined/weak-undef.t: Supporting
files for above.
* ld-elfvers/vers.exp: Run test on Linux/ARM.
* ld-elfvsb/elfvsb.exp: Likewise.
* ld-shared/shared.exp: Likewise.

View File

@ -0,0 +1,54 @@
# Test handling of weak undefined symbols
set testname "weak undefined symbols"
# This test only works for ELF targets. It ought to work for some
# a.out targets, but it doesn't.
if { ![istarget *-*-sysv4*] \
&& ![istarget *-*-unixware*] \
&& ![istarget *-*-elf*] \
&& ![istarget *-*-eabi*] \
&& ![istarget *-*-linux*] \
&& ![istarget *-*-irix5*] \
&& ![istarget *-*-irix6*] \
&& ![istarget *-*-solaris2*] } then {
return
}
if { [istarget *-*-linux*aout*] \
|| [istarget *-*-linux*oldld*] } {
return
}
if {! [ld_assemble $as $srcdir/$subdir/weak-undef.s tmpdir/weak-undef.o]} then {
# It's OK if .weak doesn't work on this target.
unresolved $testname
return
}
# The linker should accept references to undefined weaks without error,
# and resolve them to zero.
set output_regexp \
".*Contents of section .data:.*0000 00000000 11111111.*"
if {! [ld_simple_link $ld tmpdir/weak-undef "$flags tmpdir/weak-undef.o -T $srcdir/$subdir/weak-undef.t"] } then {
fail $testname
} else {
if {[which $objdump] == 0} then {
unresolved $testname
return
}
verbose -log "$objdump -s tmpdir/weak-undef"
catch "exec $objdump -s tmpdir/weak-undef" exec_output
set exec_output [prune_warnings $exec_output]
verbose -log $exec_output
if {[regexp $output_regexp $exec_output]} then {
pass $testname
} else {
fail $testname
}
}

View File

@ -0,0 +1,4 @@
.data
.weak foo
.long foo
.long 0x11111111

View File

@ -0,0 +1,9 @@
SECTIONS
{
.data : {
tmpdir/weak-undef.o(.data)
}
/DISCARD/ : {
*(*)
}
}