mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
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:
parent
4f38fc1c6c
commit
7dc542b23c
@ -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.
|
||||
|
54
ld/testsuite/ld-undefined/weak-undef.exp
Normal file
54
ld/testsuite/ld-undefined/weak-undef.exp
Normal 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
|
||||
}
|
||||
}
|
4
ld/testsuite/ld-undefined/weak-undef.s
Normal file
4
ld/testsuite/ld-undefined/weak-undef.s
Normal file
@ -0,0 +1,4 @@
|
||||
.data
|
||||
.weak foo
|
||||
.long foo
|
||||
.long 0x11111111
|
9
ld/testsuite/ld-undefined/weak-undef.t
Normal file
9
ld/testsuite/ld-undefined/weak-undef.t
Normal file
@ -0,0 +1,9 @@
|
||||
SECTIONS
|
||||
{
|
||||
.data : {
|
||||
tmpdir/weak-undef.o(.data)
|
||||
}
|
||||
/DISCARD/ : {
|
||||
*(*)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user