aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2011-09-29 00:13:14 +0000
committerH.J. Lu <hjl.tools@gmail.com>2011-09-29 00:13:14 +0000
commit54e8959c602eddaf8e7c895445610b6f40c92f56 (patch)
tree93561eb42adb872d28a797f52e2a68dc25db3239 /ld
parentd8250e5afa23fe5c4e22f156a4a7cd8e1b490306 (diff)
downloadgdb-54e8959c602eddaf8e7c895445610b6f40c92f56.zip
gdb-54e8959c602eddaf8e7c895445610b6f40c92f56.tar.gz
gdb-54e8959c602eddaf8e7c895445610b6f40c92f56.tar.bz2
Fix --gc-sections failure with symbol versioning.
bfd/ 2011-09-28 H.J. Lu <hongjiu.lu@intel.com> PR ld/13195 * elflink.c (_bfd_elf_merge_symbol): Don't set dynamic_def when clearing def_dynamic. (elf_link_add_object_symbols): Likewise. Set dynamic_def when setting def_dynamic. (bfd_elf_gc_mark_dynamic_ref_symbol): Check if a symbol is versioned. ld/testsuite/ 2011-09-28 H.J. Lu <hongjiu.lu@intel.com> PR ld/13195 * ld-elf/elf.exp: Add a C link testcase for PR ld/13195. * ld-elf/pr13195.c: New. * ld-elf/pr13195.d: Likewise. * ld-elf/pr13195.s: Likewise. * ld-elf/pr13195.t: Likewise.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ld-elf/elf.exp5
-rw-r--r--ld/testsuite/ld-elf/pr13195.c5
-rw-r--r--ld/testsuite/ld-elf/pr13195.d10
-rw-r--r--ld/testsuite/ld-elf/pr13195.s6
-rw-r--r--ld/testsuite/ld-elf/pr13195.t6
5 files changed, 32 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index 4a00b81..866c866 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -138,6 +138,11 @@ if ![isnative] {
return
}
+run_cc_link_tests {
+ {"PR ld/13195" "-Wl,--gc-sections" ""
+ {pr13195.c} {} "pr13195"}
+}
+
set array_tests {
{"preinit array" "" "" {preinit.c} "preinit" "preinit.out"}
{"init array" "" "" {init.c} "init" "init.out"}
diff --git a/ld/testsuite/ld-elf/pr13195.c b/ld/testsuite/ld-elf/pr13195.c
new file mode 100644
index 0000000..a9bce4a
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr13195.c
@@ -0,0 +1,5 @@
+int
+main ()
+{
+ return 0;
+}
diff --git a/ld/testsuite/ld-elf/pr13195.d b/ld/testsuite/ld-elf/pr13195.d
new file mode 100644
index 0000000..796102b
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr13195.d
@@ -0,0 +1,10 @@
+#ld: --gc-sections -shared -version-script pr13195.t
+#readelf: -s --wide -D
+#target: *-*-linux* *-*-gnu*
+#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
+#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
+# generic linker targets don't support --gc-sections, nor do a bunch of others
+
+#...
+ +[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9]+ foo
+#pass
diff --git a/ld/testsuite/ld-elf/pr13195.s b/ld/testsuite/ld-elf/pr13195.s
new file mode 100644
index 0000000..409b5af
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr13195.s
@@ -0,0 +1,6 @@
+ .section .text.new_foo,"ax",%progbits
+ .globl new_foo
+ .type new_foo, %function
+new_foo:
+ .byte 0
+ .symver new_foo,foo@@VERS_2.0
diff --git a/ld/testsuite/ld-elf/pr13195.t b/ld/testsuite/ld-elf/pr13195.t
new file mode 100644
index 0000000..2b82842
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr13195.t
@@ -0,0 +1,6 @@
+VERS_2.0 {
+global:
+ foo;
+local:
+ *;
+};