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

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

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

commit 6274233ac8dddf923f567227dd887e1d79bf35d7
Author: Alan Modra <amo...@gmail.com>
Date:   Sat Aug 23 13:07:40 2025 +0930

    PR 33302, Symbols truncated on i386pep target

    Commit 012d44268695 effectively made peXXigen.c _bfd_XXi_swap_aux_out
    always use the COFF E_FILNMLEN of 14.  The problem was that the auxent
    x_fname field was defined in include/coff/external.h using a length of
    14.  Later, E_FILNMLEN is redefined to 18 in coff/pe.h.  This no doubt
    falsely tripped memory checking tools.  AUXESZ is 18, so no actual
    buffer overrun.

    This patch defines x_fname as an 18 char field, the full auxent, and
    uses E_FILNMLEN when accessing.

            PR 33302
    include/
            * coff/external.h (union external_auxent): Make x_fname
            AUXESZ chars.
    bfd/
            * coffswap.h (coff_swap_aux_in): Correct #error message.
            (coff_swap_aux_out): Likewise.  Use E_FILNMLEN when copying
            to ext field.
            * peXXigen.c (_bfd_XXi_swap_aux_in): Add #error.  Style fix.
            (_bfd_XXi_swap_aux_out): Add #error.  Don't use sizeof, use
            E_FILNMLEN when copying to ext field.
    gas
            * testsuite/gas/pe/long_file_symbol.d,
            * testsuite/gas/pe/long_file_symbol.s: New test.
            * testsuite/gas/pe/pe.exp: Run it.

    Reported-By: Frediano Ziglio <fredd...@gmail.com>

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

Reply via email to