From d023c380db01abd7f6f2a53edecca09488b53982 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 8 Jan 2010 03:03:16 +0000 Subject: Fix PR ld/11138 bfd/ 2010-01-07 H.J. Lu PR ld/11138 * elflink.c (elf_link_check_versioned_symbol): Don't abort if a symbol referenced by DSO is is defined in a non-shared object and forced local. ld/testsuite/ 2010-01-07 H.J. Lu PR ld/11138 * ld-elf/pr11138-1.c: New. * ld-elf/pr11138-1.map: Likewise. * ld-elf/pr11138-2.c: Likewise. * ld-elf/pr11138-2.map: Likewise. * ld-elf/pr11138.out: Likewise. * ld-elf/shared.exp (build_tests): Add libpr11138-1.so and libpr11138-2.o. (run_tests): Add 2 tests for PR ld/11138. --- bfd/ChangeLog | 7 +++++++ bfd/elflink.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'bfd') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0f2e0e4dc1..b9a32c49a8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2010-01-07 H.J. Lu + + PR ld/11138 + * elflink.c (elf_link_check_versioned_symbol): Don't abort if + a symbol referenced by DSO is is defined in a non-shared object + and forced local. + 2010-01-07 H.J. Lu PR ld/11133 diff --git a/bfd/elflink.c b/bfd/elflink.c index f9f804de73..24d870299a 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -8492,10 +8492,14 @@ elf_link_check_versioned_symbol (struct bfd_link_info *info, _bfd_elf_swap_versym_in (input, ever, &iver); - if ((iver.vs_vers & VERSYM_HIDDEN) == 0) + if ((iver.vs_vers & VERSYM_HIDDEN) == 0 + && !(h->def_regular + && h->forced_local)) { /* If we have a non-hidden versioned sym, then it should - have provided a definition for the undefined sym. */ + have provided a definition for the undefined sym unless + it is defined in a non-shared object and forced local. + */ abort (); } -- cgit v1.2.1