bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/31850] aarch64: unnecessary GOT entries and relocations for disc


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/31850] aarch64: unnecessary GOT entries and relocations for discarded references
Date: Fri, 07 Jun 2024 07:23:45 +0000

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

--- Comment #1 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Szabolcs Nagy <nsz@sourceware.org>:

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

commit 961befd69308895bf1dc39737d1598246dc296a8
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date:   Mon Jun 3 17:20:32 2024 +0100

    aarch64: Fix DT_RELR support with discarded sections

    In case of discarded sections, via /DISCARD/ or .gnu.linkonce,
    relr relocation accounting was wrong.  This broke building linux.

    The issue was that the *_relocate_section logic was copied to
    record_relr_non_got_relocs to find the relative relocs that can
    be packed, however *_relocate_section is not called on sections
    that are discarded, while record_relr_non_got_relocs is called
    for all input sections. The fix is to filter out the discarded
    sections with the same logic that is used to count non-GOT
    relocs in *_late_size_sections for local symbols earlier.
    Use the discarded_section helper in both cases to clarify the
    intent and handle all corner-cases consistently.

    GOT relocations are affected too if all sections are discarded
    that reference the GOT entry of a particular symbol, however
    this can cause unused GOT entries independently of DT_RELR, and
    the only difference with DT_RELR is that a relative reloc may be
    emitted instead of a R_AARCH64_NONE for the unused GOT entry
    which is acceptable. A proper fix would require redoing the GOT
    refcounting after we know the discarded sections, see bug 31850.

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