aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elf/elf.exp
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-06-10 14:04:25 +0000
committerNick Clifton <nickc@redhat.com>2011-06-10 14:04:25 +0000
commit894891db7f1ff09f021a0d2c8bb471f3a73a776a (patch)
tree92496b5fd1ebc0c60c95f341ca77699e87569545 /ld/testsuite/ld-elf/elf.exp
parent12af614e24384fa939bbc1b55e40cfc28322c3a4 (diff)
downloadgdb-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.exp39
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.