Browse Source
* ld-scripts/weak.t: New file. * ld-scripts/weak1.s: New file. * ld-scripts/weak2.s: New file.gdb-4_18-branch
5 changed files with 89 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||
# Test weak symbols. |
|||
# By Ian Lance Taylor, Cygnus Solutions. |
|||
|
|||
set testname "weak 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 *-*-linux*] \ |
|||
&& ![istarget *-*-irix5*] \ |
|||
&& ![istarget *-*-irix6*] \ |
|||
&& ![istarget *-*-solaris2*] } then { |
|||
return |
|||
} |
|||
|
|||
if { [istarget *-*-linuxaout*] \ |
|||
|| [istarget *-*-linuxoldld*] } { |
|||
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. |
|||
unresolved $testname |
|||
return |
|||
} |
|||
|
|||
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_simple_link $ld tmpdir/weak "-T $srcdir/$subdir/weak.t tmpdir/weak1.o tmpdir/weak2.o"] } then { |
|||
fail $testname |
|||
} else { |
|||
if {[which $objdump] == 0} then { |
|||
unresolved $testname |
|||
return |
|||
} |
|||
|
|||
verbose -log "$objdump -s tmpdir/weak" |
|||
catch "exec $objdump -s tmpdir/weak" exec_output |
|||
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 |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
SECTIONS |
|||
{ |
|||
.text 0x1000 : { |
|||
tmpdir/weak1.o(*) |
|||
} |
|||
.data 0x2000 : { |
|||
tmpdir/weak2.o(*) |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
.global foo1 |
|||
.global sym1 |
|||
.weak sym2 |
|||
foo1: |
|||
.long sym1 |
|||
.long sym2 |
|||
sym1: |
|||
.long 0x12121212 |
|||
sym2: |
|||
.long 0x34343434 |
|||
@ -0,0 +1,10 @@ |
|||
.global foo2 |
|||
.weak sym1 |
|||
.global sym2 |
|||
foo2: |
|||
.long sym1 |
|||
.long sym2 |
|||
sym1: |
|||
.long 0x56565656 |
|||
sym2: |
|||
.long 0x78787878 |
|||
Loading…
Reference in new issue