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

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

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

commit aad80d24d29efc2cb5d80f33f7ee127e918ba34f
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Tue Sep 2 11:26:57 2025 -0700

    x86: Check plt_got_offset for lazy IBT PLT

    Lazy IBT PLT entries look like

    static const bfd_byte elf_i386_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
    {
      0xf3, 0x0f, 0x1e, 0xfb,       /* endbr32                    */
      0x68, 0, 0, 0, 0,             /* pushl immediate            */
      0xe9, 0, 0, 0, 0,             /* jmp relative               */
      0x66, 0x90                    /* xchg %ax,%ax               */
    };

    static const bfd_byte elf_x86_64_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
    {
      0xf3, 0x0f, 0x1e, 0xfa,       /* endbr64                    */
      0x68, 0, 0, 0, 0,             /* pushq immediate            */
      0xe9, 0, 0, 0, 0,             /* jmpq relative              */
      0x66, 0x90                    /* xchg %ax,%ax               */
    };

    They only have

    unsigned int plt_reloc_offset;  /* ... offset into relocation table. */

    and don't have

    unsigned int plt_got_offset;    /* ... address of this symbol in .got. */

    We should use plt_reloc_offset, not plt_got_offset, to check IBT PLT.

            PR binutils/33358
            * elf32-i386.c (elf_i386_get_synthetic_symtab): Check
            plt_reloc_offset for lazy IBT PLT.
            * elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Likewise.

    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>

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

Reply via email to