aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-06-28 08:08:04 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-06-28 08:08:30 -0700
commitf4ab0e2d1d4e14cfdddf46ac846c48ae55f4e14a (patch)
treed2afef7558477e2ddbc901c3170a3a0278b61b75 /ld
parent1b857aeed3f5cfddc4b5b1f5836ccd341aeb9f5d (diff)
downloadgdb-f4ab0e2d1d4e14cfdddf46ac846c48ae55f4e14a.zip
gdb-f4ab0e2d1d4e14cfdddf46ac846c48ae55f4e14a.tar.gz
gdb-f4ab0e2d1d4e14cfdddf46ac846c48ae55f4e14a.tar.bz2
Skip version check for unreferenced and undefined symbol
No need to check version if symbol is unreferenced and undefined. bfd/ PR ld/20306 * elflink.c (elf_link_check_versioned_symbol): Return false for unreferenced undefined symbol. ld/testsuite/ * testsuite/ld-gc/gc.exp: Run pr20306 test. * ld-gc/pr20306.c: New file. * ld-gc/pr20306.d: Likewise.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/testsuite/ld-gc/gc.exp15
-rw-r--r--ld/testsuite/ld-gc/pr20306.c2
-rw-r--r--ld/testsuite/ld-gc/pr20306.d3
4 files changed, 26 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 631fec5..b7a5fd7 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/ld-gc/gc.exp: Run pr20306 test.
+ * ld-gc/pr20306.c: New file.
+ * ld-gc/pr20306.d: Likewise.
+
2016-06-28 Nick Clifton <nickc@redhat.com>
* testsuite/ld-elf/comm-data.exp: Expect comm-data2 test to fail
diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp
index ffc619c..a6f3e13 100644
--- a/ld/testsuite/ld-gc/gc.exp
+++ b/ld/testsuite/ld-gc/gc.exp
@@ -146,3 +146,18 @@ if { [is_remote host] || [which $CC] != 0 } {
ld_compile "$CC $CFLAGS $cflags -O0" $srcdir/$subdir/pr19161-2.c tmpdir/pr19161-2.o
run_dump_test "pr19161"
}
+
+if { [is_elf_format] && [check_shared_lib_support] \
+ && ([is_remote host] || [which $CC] != 0) } {
+ run_cc_link_tests [list \
+ [list \
+ "Build libpr20306.so" \
+ "-shared" \
+ "-fPIC" \
+ {pr20306.c} \
+ {} \
+ "libpr20306.so" \
+ ] \
+ ]
+ run_dump_test "pr20306"
+}
diff --git a/ld/testsuite/ld-gc/pr20306.c b/ld/testsuite/ld-gc/pr20306.c
new file mode 100644
index 0000000..0968c73
--- /dev/null
+++ b/ld/testsuite/ld-gc/pr20306.c
@@ -0,0 +1,2 @@
+extern void foo();
+void bar() {foo();}
diff --git a/ld/testsuite/ld-gc/pr20306.d b/ld/testsuite/ld-gc/pr20306.d
new file mode 100644
index 0000000..07cc8e8
--- /dev/null
+++ b/ld/testsuite/ld-gc/pr20306.d
@@ -0,0 +1,3 @@
+#source: dummy.s
+#ld: -u foo --gc-sections tmpdir/libpr20306.so
+#error: .* generated: undefined reference to `foo'