aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elflink.c3
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-elf/shared.exp26
4 files changed, 38 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6e1e334..5923bc3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2014-01-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/2404
+ * elflink.c (_bfd_elf_merge_symbol): Don't check info->shared,
+ info->export_dynamic nor h->ref_dynamic for type mismatch when
+ adding the default version.
+
2014-01-16 Alan Modra <amodra@gmail.com>
* elfxx-mips.c (mips_elf_record_got_page_entry): Pass in a
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 7dcafd6..8ba0888 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -1090,9 +1090,6 @@ _bfd_elf_merge_symbol (bfd *abfd,
the type of existing regular definition mismatch. We only do it
if the existing regular definition won't be dynamic. */
if (pold_alignment == NULL
- && !info->shared
- && !info->export_dynamic
- && !h->ref_dynamic
&& newdyn
&& newdef
&& !olddyn
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 84729b6..ac65a3a 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/2404
+ * ld-elf/shared.exp: Add a PIE test for PR ld/2404.
+
2014-01-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/2404
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
index afc262c..bbfd464 100644
--- a/ld/testsuite/ld-elf/shared.exp
+++ b/ld/testsuite/ld-elf/shared.exp
@@ -453,3 +453,29 @@ set run_cxx_tests {
run_cc_link_tests $build_cxx_tests
run_ld_link_exec_tests [] $run_cxx_tests
+
+if { [istarget *-*-linux*]
+ || [istarget *-*-nacl*]
+ || [istarget *-*-gnu*] } {
+ run_cc_link_tests [list \
+ [list \
+ "Build libpr2404b.a with PIE" \
+ "" \
+ "-fPIE" \
+ { pr2404b.c } \
+ {} \
+ "libpr2404b.a" \
+ ] \
+ ]
+ run_ld_link_exec_tests [] [list \
+ [list \
+ "Run pr2404 with PIE" \
+ "-pie tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
+ "" \
+ { dummy.c } \
+ "pr2404pie" \
+ "pr2404.out" \
+ "-fPIE" \
+ ] \
+ ]
+}