[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/13577] Gold linker does not respect --dynamic-list option

From: cvs-commit at gcc dot gnu.org
Subject: [Bug gold/13577] Gold linker does not respect --dynamic-list option
Date: Tue, 17 Feb 2015 06:15:52 +0000


--- Comment #7 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Cary Coutant <address@hidden>:


commit e9c1bdad269c0c3352eebcc9481ed65144001b0b
Author: Cary Coutant <address@hidden>
Date:   Mon Feb 16 22:15:12 2015 -0800

    Fix --dynamic-list so that symbols not in the list are still exported.

    In PR 13577, the complaint was that -Bsymbolic was overriding the binding
    behavior for symbols listed in the --dynamic-list by setting the
    tag in the dynamic table. In reading the Gnu ld manual, I decided that
    --dynamic-list should be mutually exclusive of -Bsymbolic, and modified
    gold so that --dynamic-list would treat symbols listed as preemptible,
    and all other symbols as internally bound. I was wrong.

    PR 16992 shows that with --dynamic-list (and not -Bsymbolic), a symbol
    not listed in the dynamic list is being internally bound within the
    shared library, but because it's still in the dynamic symbol table, we
    expose it to a COPY relocation, and things go really bad from there.

    (I can reproduce the same failure, simply by turning on
    with the Gnu linker. Even though the symbol is bound internally, it's
    still exported to the dynamic symbol table, and is exposed to a COPY

    I've backed out part of the fix for PR 13577, and -Bsymbolic (or
    -Bsymbolic-functions) can now be used with --dynamic-list, but if the
    two are used together, we do not set DT_SYMBOLIC or DF_SYMBOLIC
    (this matches Gnu ld behavior). We now treat symbols listed in the
    dynamic list as premptible, but we do not automatically treat symbols
    not listed there as non-premptible.

        PR gold/13577
        PR gold/16992
        * layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
        DF_SYMBOLIC if --dynamic-list option is used.
        * options.cc (General_options::finalize): --dynamic-list is not
        mutually exclusive with -Bsymbolic.
        * symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
        listed in --dynamic-list.
        * testsuite/Makefile.am (dynamic_list_lib2.so): Add
        * testsuite/Makefile.in: Regenerate.

You are receiving this mail because:
You are on the CC list for the bug.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]