]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Remove sframe relocs against discarded sections
authorAlan Modra <amodra@gmail.com>
Thu, 17 Jul 2025 05:12:31 +0000 (14:42 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 17 Jul 2025 05:12:31 +0000 (14:42 +0930)
Commit d7f343eaad3f testsuite change resulted in a regression for
s390x-linux.  This extends the x86_64 fix to other targets.

PR ld/33156
* elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Remove .sframe
relocs too.

bfd/elf-bfd.h

index 2bd855a936c756f11f28f8f595fb0a3b7f8de9d7..5af11cf6a31b4621a54d38998d62006250e388b9 100644 (file)
@@ -3280,11 +3280,14 @@ extern asection _bfd_elf_large_com_section;
     _bfd_clear_contents (howto, input_bfd, input_section,              \
                         contents, rel[index].r_offset);                \
                                                                        \
+    /* For ld -r, remove relocations in debug and sframe sections      \
+       against symbols defined in discarded sections.  Not done for    \
+       others.  In particular the .eh_frame editing code expects       \
+       such relocs to be present.  */                                  \
     if (bfd_link_relocatable (info)                                    \
-       && (input_section->flags & SEC_DEBUGGING))                      \
+       && ((input_section->flags & SEC_DEBUGGING) != 0                 \
+           || elf_section_type (input_section) == SHT_GNU_SFRAME))     \
       {                                                                        \
-       /* Only remove relocations in debug sections since other        \
-          sections may require relocations.  */                        \
        Elf_Internal_Shdr *rel_hdr;                                     \
                                                                        \
        rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section); \