Remove sframe relocs against discarded sections

Alan Modra amodra@gmail.com
Fri Jul 18 00:10:23 GMT 2025


On Thu, Jul 17, 2025 at 03:18:38PM +0930, Alan Modra wrote:
> Commit d7f343eaad3f testsuite change resulted in a regression for
> s390x-linux.  This extends the x86_64 fix to other targets.

OK for the branch too?

> 	PR ld/33156
> 	* elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Remove .sframe
> 	relocs too.
> 
> diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
> index 2bd855a936c..5af11cf6a31 100644
> --- a/bfd/elf-bfd.h
> +++ b/bfd/elf-bfd.h
> @@ -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); \

-- 
Alan Modra


More information about the Binutils mailing list