bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/22471] libraries using version scripts can cause undefined refer


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols
Date: Tue, 28 Nov 2017 12:28:00 +0000

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

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

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

commit 165f707ac88916aedecc96fa518be8879704d6da
Author: Alan Modra <address@hidden>
Date:   Mon Nov 27 13:40:43 2017 +1030

    PR22471, undefined reference to linker-defined symbols

    This patch processes linker script assignment statements before ld
    opens DT_NEEDED libraries, in order to define symbols like __bss_start
    that might also be defined by a library, falsely triggering an error
    about "DSO missing from command line".

    The initial value won't be correct when assigning a symbol from dot,
    and I make no attempt to handle all expressions.  For example, an
    assignment like "_start_foo = ADDR (.foo)" isn't valid until sections
    are laid out, so won't define _start_foo early.  What's here should be
    enough for most common scripts, and hopefully won't perturb fragile
    scripts.

    bfd/
        PR 22471
        * elflink.c (_bfd_elf_merge_symbol): Allow weak symbols to override
        early passes over linker script symbols.
        * linker.c (_bfd_generic_link_add_one_symbol): Allow symbols to
        override early passes over linker script symbols.  Clear ldscript_def
        on symbol definitions.
    ld/
        PR 22471
        * ldexp.c (struct definedness_hash_entry): Delete "by_script".  Make
        "iteration" an 8-bit field, and update mask in all uses.
        (definedness_newfunc): Don't init "by_script".
        (update_definedness): Test ldscript_def rather than by_script.
        (is_sym_value): Likewise.
        (fold_name <DEFINED>): Return a result for first phase.  Test
        ldscript_def.
        (fold_name <NAME>): Return a result for first phase.
        * ldlang.c (open_input_bfds): Process all assignments, not just
        defsym.
        (lang_process): Increment lang_statement_iteration before
        open_input_bfds.
        * testsuite/ld-mips-elf/tlsdyn-o32-1.d: Adjust for larger .dynsym.
        * testsuite/ld-mips-elf/tlsdyn-o32-1.got: Likewise.
        * testsuite/ld-mips-elf/tlsdyn-o32-2.d: Likewise.
        * testsuite/ld-mips-elf/tlsdyn-o32-2.got: Likewise.
        * testsuite/ld-mips-elf/tlsdyn-o32-3.d: Likewise.
        * testsuite/ld-mips-elf/tlsdyn-o32-3.got: Likewise.

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