diff options
author | Nick Clifton <nickc@redhat.com> | 2011-06-10 14:04:25 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2011-06-10 14:04:25 +0000 |
commit | 894891db7f1ff09f021a0d2c8bb471f3a73a776a (patch) | |
tree | 92496b5fd1ebc0c60c95f341ca77699e87569545 /ld/testsuite/ld-elf/elf.exp | |
parent | 12af614e24384fa939bbc1b55e40cfc28322c3a4 (diff) | |
download | gdb-894891db7f1ff09f021a0d2c8bb471f3a73a776a.zip gdb-894891db7f1ff09f021a0d2c8bb471f3a73a776a.tar.gz gdb-894891db7f1ff09f021a0d2c8bb471f3a73a776a.tar.bz2 |
* elflink.c (_bfd_elf_link_create_dynamic_sections): If the
backend does not provide a function for creating dynamic sections
then fail.
(bfd_elf_final_link): Issue a warning message if a dynamic section
has the SHT_NOTE type.
(bfd_elf_final_link): Do not look for dynamic strings in a section
that does not have the SHT_STRTAB type or the name .dynstr.
* elf32-arm.c (elf32_arm_finish_dynamic_sections): Fail if the got
section is not in the output binary.
* elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Likewise.
* ld-elf/elf.exp: Add test for linking a shared library with a
broken linker script that marks dynamic sections as being notes.
* ld-elf/note-3.s: New test source file.
* ld-elf/note-3.t: New test linker script.
* ld-elf/note-3.l: Expected output from the linker.
* lib/ld-lib.exp (run_ld_link_tests): Improve description.
Diffstat (limited to 'ld/testsuite/ld-elf/elf.exp')
-rw-r--r-- | ld/testsuite/ld-elf/elf.exp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp index e991f83..61efc4a 100644 --- a/ld/testsuite/ld-elf/elf.exp +++ b/ld/testsuite/ld-elf/elf.exp @@ -49,6 +49,45 @@ run_ld_link_tests { {symbol3w.s} {} "symbol3w.a"} } +# Run a test to check linking a shared library with a broken linker +# script that accidentally marks dynamic sections as notes. The +# resulting executable is not expected to work, but the linker +# should not seg-fault whilst creating the binary. +# +# Only run the test on targets thats support creating shared libraries. +if { ! [istarget arc-*-*] + && ! [istarget avr-*-*] + && ! [istarget cr16-*-*] + && ! [istarget cris*-*-*] + && ! [istarget crx-*-*] + && ! [istarget d10v-*-*] + && ! [istarget d30v-*-*] + && ! [istarget dlx-*-*] + && ! [istarget fr30-*-*] + && ! [istarget frv-*-*] + && ! [istarget h8300-*-*] + && ! [istarget ip2k-*-*] + && ! [istarget m32r-*-*] + && ! [istarget mcore*-*-*] + && ! [istarget mn10200-*-*] + && ! [istarget msp430-*-*] + && ! [istarget openrisc-*-*] + && ! [istarget or32-*-*] + && ! [istarget pj-*-*] + && ! [istarget rx-*-*] + && ! [istarget v850-*-*] + && ! [istarget *-*-irix*] + && ! [istarget *-*-rtems] } { + run_ld_link_tests { + {"Build shared library for next test" + "-shared" "" "note-3.s" {} "note-3.so" } + {"Link using broken linker script" + "--script note-3.t tmpdir/note-3.so" "" "" + { { ld "note-3.l" } } + "a.out" } + } +} + set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] foreach t $test_list { # We need to strip the ".d", but can leave the dirname. |