aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2007-07-23 09:56:19 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2007-07-23 09:56:19 +0000
commita26587bab514ebd91e3463018462acc6855826f1 (patch)
tree0311bc63776a670e00cdc3730b3c9e520722b7c7 /ld
parent07a5aea53e1b1d0d2148ed6a49e18d141dc504b0 (diff)
downloadfsf-binutils-gdb-a26587bab514ebd91e3463018462acc6855826f1.zip
fsf-binutils-gdb-a26587bab514ebd91e3463018462acc6855826f1.tar.gz
fsf-binutils-gdb-a26587bab514ebd91e3463018462acc6855826f1.tar.bz2
bfd/
* elflink.c (_bfd_elf_fix_symbol_flags): Only assert the type of weakdef->root.type if weakdef has no regular definition. ld/testsuite/ * ld-elf/weak-dyn-1a.s, ld-elf/weak-dyn-1b.s, ld-elf/weak-dyn-1.ld, * ld-elf/weak-dyn-1.rd: New test. * ld-elf/elf.exp: Run it.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-elf/elf.exp13
-rw-r--r--ld/testsuite/ld-elf/weak-dyn-1.ld8
-rw-r--r--ld/testsuite/ld-elf/weak-dyn-1.rd3
-rw-r--r--ld/testsuite/ld-elf/weak-dyn-1a.s13
-rw-r--r--ld/testsuite/ld-elf/weak-dyn-1b.s3
6 files changed, 46 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 2f49bdd..4b82886 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-07-23 Richard Sandiford <richard@codesourcery.com>
+
+ * ld-elf/weak-dyn-1a.s, ld-elf/weak-dyn-1b.s, ld-elf/weak-dyn-1.ld,
+ * ld-elf/weak-dyn-1.rd: New test.
+ * ld-elf/elf.exp: Run it.
+
2007-07-13 Nathan Sidwell <nathan@codesourcery.com>
* ld-scripts/assert.t: Tweak to avoid relying on empty's VMA being
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index 51780d3..20e9980 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -36,6 +36,19 @@ foreach t $test_list {
run_dump_test [file rootname $t]
}
+if { [istarget *-*-linux*] } {
+ run_ld_link_tests {
+ {"Weak symbols in dynamic objects 1 (support)"
+ "-shared" "" {weak-dyn-1a.s}
+ {}
+ "libweakdyn1a.so"}
+ {"Weak symbols in dynamic objects 1 (main test)"
+ "-shared tmpdir/libweakdyn1a.so -Tweak-dyn-1.ld" "" {weak-dyn-1b.s}
+ {{readelf {--relocs --wide} weak-dyn-1.rd}}
+ "libweakdyn1b.so"}
+ }
+}
+
# The following tests require running the executable generated by ld.
if ![isnative] {
return
diff --git a/ld/testsuite/ld-elf/weak-dyn-1.ld b/ld/testsuite/ld-elf/weak-dyn-1.ld
new file mode 100644
index 0000000..495b712
--- /dev/null
+++ b/ld/testsuite/ld-elf/weak-dyn-1.ld
@@ -0,0 +1,8 @@
+SECTIONS
+{
+ . = 0x800000;
+ PROVIDE (bar = .);
+ .data : {
+ *(.data)
+ }
+}
diff --git a/ld/testsuite/ld-elf/weak-dyn-1.rd b/ld/testsuite/ld-elf/weak-dyn-1.rd
new file mode 100644
index 0000000..169abd8
--- /dev/null
+++ b/ld/testsuite/ld-elf/weak-dyn-1.rd
@@ -0,0 +1,3 @@
+#...
+0+800000 .* foo.*
+#pass
diff --git a/ld/testsuite/ld-elf/weak-dyn-1a.s b/ld/testsuite/ld-elf/weak-dyn-1a.s
new file mode 100644
index 0000000..d77c32e
--- /dev/null
+++ b/ld/testsuite/ld-elf/weak-dyn-1a.s
@@ -0,0 +1,13 @@
+ .globl foo
+ .weak foo
+ .type foo,%object
+ .size foo,1
+
+ .globl bar
+ .type bar,%object
+ .size bar,1
+
+ .data
+foo:
+bar:
+ .dc.a data_begin
diff --git a/ld/testsuite/ld-elf/weak-dyn-1b.s b/ld/testsuite/ld-elf/weak-dyn-1b.s
new file mode 100644
index 0000000..a3c3fa5
--- /dev/null
+++ b/ld/testsuite/ld-elf/weak-dyn-1b.s
@@ -0,0 +1,3 @@
+ .data
+ .dc.a foo
+ .dc.a data_begin