aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1998-06-19 21:13:57 +0000
committerIan Lance Taylor <ian@airs.com>1998-06-19 21:13:57 +0000
commit0d61eedd67d4933a049eeb81165672088a07edc1 (patch)
tree377fa7fd0588ad8b1eaab4b48691b7de3345397d /ld/testsuite
parentae49bab67601b15e7b246a9bdb0e3b3b177d764c (diff)
downloadgdb-0d61eedd67d4933a049eeb81165672088a07edc1.zip
gdb-0d61eedd67d4933a049eeb81165672088a07edc1.tar.gz
gdb-0d61eedd67d4933a049eeb81165672088a07edc1.tar.bz2
* ld-scripts/weak.exp: New test.
* ld-scripts/weak.t: New file. * ld-scripts/weak1.s: New file. * ld-scripts/weak2.s: New file.
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-scripts/.Sanitize4
-rw-r--r--ld/testsuite/ld-scripts/weak.exp56
-rw-r--r--ld/testsuite/ld-scripts/weak.t9
-rw-r--r--ld/testsuite/ld-scripts/weak1.s10
-rw-r--r--ld/testsuite/ld-scripts/weak2.s10
5 files changed, 89 insertions, 0 deletions
diff --git a/ld/testsuite/ld-scripts/.Sanitize b/ld/testsuite/ld-scripts/.Sanitize
index a420092..727cb64 100644
--- a/ld/testsuite/ld-scripts/.Sanitize
+++ b/ld/testsuite/ld-scripts/.Sanitize
@@ -42,6 +42,10 @@ scriptm.t
sizeof.exp
sizeof.s
sizeof.t
+weak.exp
+weak.t
+weak1.s
+weak2.s
Things-to-lose:
diff --git a/ld/testsuite/ld-scripts/weak.exp b/ld/testsuite/ld-scripts/weak.exp
new file mode 100644
index 0000000..4c1007f
--- /dev/null
+++ b/ld/testsuite/ld-scripts/weak.exp
@@ -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
+ }
+}
diff --git a/ld/testsuite/ld-scripts/weak.t b/ld/testsuite/ld-scripts/weak.t
new file mode 100644
index 0000000..9e465c7
--- /dev/null
+++ b/ld/testsuite/ld-scripts/weak.t
@@ -0,0 +1,9 @@
+SECTIONS
+{
+ .text 0x1000 : {
+ tmpdir/weak1.o(*)
+ }
+ .data 0x2000 : {
+ tmpdir/weak2.o(*)
+ }
+}
diff --git a/ld/testsuite/ld-scripts/weak1.s b/ld/testsuite/ld-scripts/weak1.s
new file mode 100644
index 0000000..4cb9003
--- /dev/null
+++ b/ld/testsuite/ld-scripts/weak1.s
@@ -0,0 +1,10 @@
+ .global foo1
+ .global sym1
+ .weak sym2
+foo1:
+ .long sym1
+ .long sym2
+sym1:
+ .long 0x12121212
+sym2:
+ .long 0x34343434
diff --git a/ld/testsuite/ld-scripts/weak2.s b/ld/testsuite/ld-scripts/weak2.s
new file mode 100644
index 0000000..ac484ed
--- /dev/null
+++ b/ld/testsuite/ld-scripts/weak2.s
@@ -0,0 +1,10 @@
+ .global foo2
+ .weak sym1
+ .global sym2
+foo2:
+ .long sym1
+ .long sym2
+sym1:
+ .long 0x56565656
+sym2:
+ .long 0x78787878