* ld-scripts/weak.exp: New test.
authorIan Lance Taylor <ian@airs.com>
Fri, 19 Jun 1998 21:13:57 +0000 (21:13 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 19 Jun 1998 21:13:57 +0000 (21:13 +0000)
* ld-scripts/weak.t: New file.
* ld-scripts/weak1.s: New file.
* ld-scripts/weak2.s: New file.

ld/testsuite/ld-scripts/.Sanitize
ld/testsuite/ld-scripts/weak.exp [new file with mode: 0644]
ld/testsuite/ld-scripts/weak.t [new file with mode: 0644]
ld/testsuite/ld-scripts/weak1.s [new file with mode: 0644]
ld/testsuite/ld-scripts/weak2.s [new file with mode: 0644]

index a420092f6f143a0168eb3fea29790a0556d8e050..727cb6416385f371284d6c5cdc223891c80c26a2 100644 (file)
@@ -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 (file)
index 0000000..4c1007f
--- /dev/null
@@ -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 (file)
index 0000000..9e465c7
--- /dev/null
@@ -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 (file)
index 0000000..4cb9003
--- /dev/null
@@ -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 (file)
index 0000000..ac484ed
--- /dev/null
@@ -0,0 +1,10 @@
+       .global foo2
+       .weak   sym1
+       .global sym2
+foo2:
+       .long   sym1
+       .long   sym2
+sym1:
+       .long   0x56565656
+sym2:
+       .long   0x78787878
This page took 0.034268 seconds and 4 git commands to generate.