bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/20828] GC-ed DSO symbols make corresponding symbols defined by a


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/20828] GC-ed DSO symbols make corresponding symbols defined by a linker script local
Date: Wed, 22 Feb 2017 18:18:44 +0000

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

--- Comment #34 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Maciej W. Rozycki <address@hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=902e9fc76a0ec9f642cefa71ef88cca1c675ad54

commit 902e9fc76a0ec9f642cefa71ef88cca1c675ad54
Author: Maciej W. Rozycki <address@hidden>
Date:   Tue Feb 21 01:46:42 2017 +0000

    PR ld/20828: Move symbol version processing ahead of GC symbol sweep

    Complement commit b531344c34b0 ("PR ld/20828: Reorder the symbol sweep
    stage of section GC") and commit 81ff47b3a546 ("PR ld/20828: Fix linker
    script symbols wrongly forced local with section GC") and move symbol
    version processing ahead of the symbol sweep stage of section GC, all in
    `bfd_elf_size_dynamic_sections', so that version symbols created stay in
    the global scope and are not output as local symbols to the dynamic
    symbol table in the presence of corresponding symbol definitions pulled
    from a DSO involved in a link.

    Consolidate the whole of symbol version processing into a single block
    from all parts scattered across the function and rearranging the local
    variables used as necessary, however leaving the setting of dynamic
    entries associated with the DT_VERDEF, DT_VERDEFNUM, DT_VERNEED and
    DT_VERNEEDNUM tags and the SEC_EXCLUDE flag for unused `.gnu.version'
    section in the original places.

    With the rearrangement of code blocks `Elf_Internal_Verneed *t' would
    shadow the previous definition of `struct bfd_elf_version_tree *t', so
    rename the former variable to `vn'.

        bfd/
        PR ld/20828
        * elflink.c (bfd_elf_size_dynamic_sections): Move symbol version
        processing ahead of the call to `elf_gc_sweep_symbol'.

        ld/
        PR ld/20828
        * testsuite/ld-elf/pr20828-d.sd: New test.
        * testsuite/ld-elf/pr20828-e.sd: New test.
        * testsuite/ld-elf/pr20828-v.od: New test.
        * testsuite/ld-elf/pr20828-v.ver: New test version script.
        * testsuite/ld-elf/pr20828-v.ld: New test linker script.
        * testsuite/ld-elf/pr20828.ld: Add `.gnu.version' and
        `.gnu.version_d'.
        * testsuite/ld-elf/shared.exp: Run the new tests.

-- 
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]