]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ld: fix PR/32297
authorJosh Poimboeuf <jpoimboe@kernel.org>
Fri, 1 Nov 2024 22:26:13 +0000 (15:26 -0700)
committerIndu Bhagat <indu.bhagat@oracle.com>
Fri, 1 Nov 2024 22:31:21 +0000 (15:31 -0700)
When _creating_ SFrame information for the linker created .plt.sec, the
code correctly checks for presence of .plt.sec.  When _writing_ the
SFrame section for the corresponding .plt.sec, however, the conditionals
were wrongly checking for splt.  This was causing an assertion at link
time.

This issue has been known to affect glibc build with SFrame enabled.

No testcase is added just yet.  A later commit ensures correct SFrame
stack trace information is created for .plt.got. A test case (where only
.plt and .plt.got are created) is added then.

PR/32297 sframe: bfd assertion with empty main on IBT enabled system

Committed by Indu Bhagat.

ChangeLog:
PR/32297
* bfd/elfxx-x86.c (_bfd_x86_elf_late_size_sections): Check for
  plt_second member not for splt.

bfd/elfxx-x86.c

index dd951b91f50281cd4db32a5bd554f42bfea055ef..0d83ce57d4ff55b72ea0d1b957022316e410a491 100644 (file)
@@ -2680,8 +2680,8 @@ _bfd_x86_elf_late_size_sections (bfd *output_bfd,
        _bfd_x86_elf_write_sframe_plt (output_bfd, info, SFRAME_PLT);
 
       if (htab->plt_second_sframe != NULL
-         && htab->elf.splt != NULL
-         && htab->elf.splt->size != 0
+         && htab->plt_second != NULL
+         && htab->plt_second->size != 0
          && htab->plt_second_sframe->contents == NULL)
        _bfd_x86_elf_write_sframe_plt (output_bfd, info, SFRAME_PLT_SEC);
     }