Remove sframe relocs against discarded sections

Indu Bhagat ibhagatgnu@gmail.com
Thu Jul 17 06:06:03 GMT 2025


On 2025-07-16 10:48 p.m., Alan Modra wrote:
> 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.
> 

Thanks Alan

> 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); \
> 



More information about the Binutils mailing list