diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2007-07-23 09:56:19 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2007-07-23 09:56:19 +0000 |
commit | a26587bab514ebd91e3463018462acc6855826f1 (patch) | |
tree | 0311bc63776a670e00cdc3730b3c9e520722b7c7 /ld | |
parent | 07a5aea53e1b1d0d2148ed6a49e18d141dc504b0 (diff) | |
download | fsf-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/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/elf.exp | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/weak-dyn-1.ld | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/weak-dyn-1.rd | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/weak-dyn-1a.s | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/weak-dyn-1b.s | 3 |
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 |