bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/31489] --as-needed doesn't work with references to builtin funct


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/31489] --as-needed doesn't work with references to builtin functions
Date: Fri, 05 Apr 2024 12:10:36 +0000

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

--- Comment #2 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@sourceware.org>:

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

commit c0419c024bf922128131671e40de0aed736e38ed
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Apr 4 18:46:40 2024 -0700

    elf: Always honor the first definition in shared object and archive

    GCC doesn't put builtin function symbol references, which are defined in
    the shared C library, in the IR symbol table.  When linker rescans shared
    objects and archives for newly added symbol references generated from the
    IR inputs, it skips definitions of the builtin functions in shared
    objects and archives.

    Add first_hash to elf_link_hash_table to track unreferenced definitions
    defined first in shared objects and archives.  Always use them to resolve
    any references.

    bfd/

            PR ld/31482
            PR ld/31489
            * elf-bfd.h (elf_link_hash_table): Add first_hash.
            * elflink.c (elf_link_add_to_first_hash): New function.
            (elf_link_add_object_symbols): Initialize first_hash for an IR
            input.  Always use the first definition in shared object.  Add
            the first unreferenced dynamic definition to first_hash.
            (_bfd_elf_archive_symbol_lookup): Add the first unreferenced
            definition to first_hash..
            (elf_link_add_archive_symbols): Use the symbol definition in
            archive if symbol is defined first in this archive.
            (_bfd_elf_link_hash_table_free): Also free first_hash.

    ld/

            PR ld/31482
            PR ld/31489
            * testsuite/ld-plugin/lto.exp: Add PR ld/31482 and PR ld/31489
            tests.
            * testsuite/ld-elf/pr31482a-no-lto.c: New file.
            * testsuite/ld-elf/pr31482b-no-lto.c: Likewise.
            * testsuite/ld-elf/pr31482c-no-lto.c: Likewise.
            * testsuite/ld-elf/pr31482d-no-lto.c: Likewise.
            * testsuite/ld-plugin/pass1.out: Likewise.
            * testsuite/ld-plugin/pr31482a.c: Likewise.
            * testsuite/ld-plugin/pr31482b.c: Likewise.
            * testsuite/ld-plugin/pr31482c.c: 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]