From dda8ddc56f160befb8f8fc3ddc69d66cec6ac4f8 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 20 Nov 2012 22:17:27 +0000 Subject: [PATCH] Remove ref_dynamic_nonweak added by accident bfd/ 2012-11-20 H.J. Lu PR ld/14862 * elf-bfd.h (elf_link_hash_entry): Remove ref_dynamic_nonweak added by accident. (elf_link_add_object_symbols): Don't set nor check ref_dynamic_nonweak. ld/testsuite/ 2012-11-20 H.J. Lu PR ld/14862 * ld-elf/shared.exp (build_tests): Build libpr14862-1.o and libpr14862.so. (run_tests): Test pr14862. * ld-elf/pr14862-1.c: New file. * ld-elf/pr14862-2.c: Likewise. * ld-elf/pr14862.map: Likewise. * ld-elf/pr14862.out: Likewise. --- bfd/ChangeLog | 8 ++++++++ bfd/elf-bfd.h | 2 -- bfd/elflink.c | 9 ++------- ld/testsuite/ChangeLog | 12 ++++++++++++ ld/testsuite/ld-elf/pr14862-1.c | 9 +++++++++ ld/testsuite/ld-elf/pr14862-2.c | 7 +++++++ ld/testsuite/ld-elf/pr14862.map | 4 ++++ ld/testsuite/ld-elf/pr14862.out | 1 + ld/testsuite/ld-elf/shared.exp | 9 +++++++++ 9 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 ld/testsuite/ld-elf/pr14862-1.c create mode 100644 ld/testsuite/ld-elf/pr14862-2.c create mode 100644 ld/testsuite/ld-elf/pr14862.map create mode 100644 ld/testsuite/ld-elf/pr14862.out diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 95f9aef6931..755e7475639 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2012-11-20 H.J. Lu + + PR ld/14862 + * elf-bfd.h (elf_link_hash_entry): Remove ref_dynamic_nonweak + added by accident. + (elf_link_add_object_symbols): Don't set nor check + ref_dynamic_nonweak. + 2012-11-20 Alan Modra * elf32-rx.c (rx_elf_print_private_bfd_data): Warning fix. diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index aa78ecd1f46..b8d82b1b7f9 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -168,8 +168,6 @@ struct elf_link_hash_entry /* Symbol has a non-weak reference from a non-shared object (other than the object in which it is defined). */ unsigned int ref_regular_nonweak : 1; - /* Symbol has a non-weak reference from a shared object. */ - unsigned int ref_dynamic_nonweak : 1; /* Dynamic symbol has been adjustd. */ unsigned int dynamic_adjusted : 1; /* Symbol needs a copy reloc. */ diff --git a/bfd/elflink.c b/bfd/elflink.c index 2fcbac3e06d..f22e023df88 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -4394,8 +4394,6 @@ error_free_dyn: { h->def_dynamic = 0; h->ref_dynamic = 1; - /* PR 12549: Note if the dynamic reference is weak. */ - h->ref_dynamic_nonweak = (bind != STB_WEAK); } } @@ -4413,9 +4411,6 @@ error_free_dyn: { h->ref_dynamic = 1; hi->ref_dynamic = 1; - /* PR 12549: Note if the dynamic reference is weak. */ - hi->ref_dynamic_nonweak = - h->ref_dynamic_nonweak = (bind != STB_WEAK); } else { @@ -4503,8 +4498,8 @@ error_free_dyn: if (!add_needed && definition && ((dynsym - && h->ref_regular_nonweak) - || (h->ref_dynamic_nonweak + && h->ref_regular) + || (h->ref_dynamic && (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0 && !on_needed_list (elf_dt_name (abfd), htab->needed)))) { diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 81ec67cf033..30a4d990a87 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2012-11-20 H.J. Lu + + PR ld/14862 + * ld-elf/shared.exp (build_tests): Build libpr14862-1.o and + libpr14862.so. + (run_tests): Test pr14862. + + * ld-elf/pr14862-1.c: New file. + * ld-elf/pr14862-2.c: Likewise. + * ld-elf/pr14862.map: Likewise. + * ld-elf/pr14862.out: Likewise. + 2012-11-20 H.J. Lu * ld-elf/global1.d: New file. diff --git a/ld/testsuite/ld-elf/pr14862-1.c b/ld/testsuite/ld-elf/pr14862-1.c new file mode 100644 index 00000000000..258a8347ce5 --- /dev/null +++ b/ld/testsuite/ld-elf/pr14862-1.c @@ -0,0 +1,9 @@ +extern void bar () __attribute__((weak)); + +int +main (void) +{ + if (bar) + bar (); + return 0; +} diff --git a/ld/testsuite/ld-elf/pr14862-2.c b/ld/testsuite/ld-elf/pr14862-2.c new file mode 100644 index 00000000000..1b9b3933c93 --- /dev/null +++ b/ld/testsuite/ld-elf/pr14862-2.c @@ -0,0 +1,7 @@ +#include + +void +bar (void) +{ + printf ("OK\n"); +} diff --git a/ld/testsuite/ld-elf/pr14862.map b/ld/testsuite/ld-elf/pr14862.map new file mode 100644 index 00000000000..29476406f7c --- /dev/null +++ b/ld/testsuite/ld-elf/pr14862.map @@ -0,0 +1,4 @@ +VERS_1 { + global: bar; + local: *; +}; diff --git a/ld/testsuite/ld-elf/pr14862.out b/ld/testsuite/ld-elf/pr14862.out new file mode 100644 index 00000000000..d86bac9de59 --- /dev/null +++ b/ld/testsuite/ld-elf/pr14862.out @@ -0,0 +1 @@ +OK diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index c9f20560e8f..9b35d53ef76 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -173,6 +173,12 @@ set build_tests { {"Build libpr14323-2.so" "-shared" "-fPIC" {pr14323-2.c} {} "libpr14323-2.so"} + {"Build pr14862-1.o" + "-r -nostdlib" "" + {pr14862-1.c} {} "libpr14862-1.o"} + {"Build libpr14862.so" + "-shared -Wl,--version-script=pr11138-1.map" "-fPIC" + {pr14862-2.c} {} "libpr14862.so"} } run_cc_link_tests $build_tests @@ -308,6 +314,9 @@ set run_tests { {"Run with pr14323-1.c pr14323-2.so" "tmpdir/libpr14323-2.so" "" {pr14323-1.c} "pr14323" "pass.out"} + {"Run with pr14862-1.c libpr14862.so" + "--as-needed tmpdir/libpr14862-1.o tmpdir/libpr14862.so" "" + {dummy.c} "pr14862" "pr14862.out"} } # NetBSD ELF systems do not currently support the .*_array sections. -- 2.30.2