https://sourceware.org/bugzilla/show_bug.cgi?id=21074

--- Comment #10 from Cary Coutant <ccoutant at gmail dot com> ---
I had a theory about how to make this happen; it's similar to a problem I ran
into with _GLOBAL_OFFSET_TABLE_ just last month. But no luck so far making it
happen with __bss_start.

Is is possible that you're using a version of gold without the following
commit? (This was backported to 2.28.)


commit 40d7d93ff412f4c34cde3daa04890d5cd2e0d9c9
Author: Cary Coutant <ccout...@gmail.com>
Date:   Wed Dec 21 17:32:39 2016 -0800

    Fix problem where version script causes predefined hidden symbol to be
defined twice.

    When creating a predefined hidden symbol like _GLOBAL_OFFSET_TABLE_, gold
    was incorrectly letting a version script add a version to the symbol,
    resulting in two copies of the symbol, both STB_LOCAL, but one of which
    was grouped in the globals part of the symbol table.

    gold/
            * symtab.cc (Symbol_table::define_special_symbol): Add
is_forced_local
            parameter; if set, do not check version script.
            (Symbol_table::do_define_in_output_data): Pass is_forced_local for
            STB_LOCAL predefined symbols.
            (Symbol_table::do_define_in_output_segment): Likewise.
            (Symbol_table::do_define_in_output_segment): Likewise.
            (Symbol_table::do_define_as_constant): Likewise.
            * symtab.h (Symbol_table::define_special_symbol): Add
is_forced_local
            parameter. Adjust all callers.
            * testsuite/Makefile.am (ver_test_8.sh): New test case.
            * testsuite/Makefile.in: Regenerate.
            * ver_test_8.sh: New test script.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to