[binutils-gdb] ld: fix PR/32297

Indu Bhagat ibhagat@sourceware.org
Fri Nov 1 22:51:43 GMT 2024


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

commit 1785837a25709721358dab9ee16bbfee74f5f4d1
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Fri Nov 1 15:26:13 2024 -0700

    ld: fix PR/32297
    
    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.

Diff:
---
 bfd/elfxx-x86.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index dd951b91f50..0d83ce57d4f 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -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);
     }


More information about the Binutils-cvs mailing list