[PATCH v2 3/5] bfd: avoid elf-sframe.c for SFrame-unaware targets
Jan Beulich
jbeulich@suse.com
Mon Mar 9 07:16:47 GMT 2026
On 07.03.2026 01:33, Indu Bhagat wrote:
> On 3/1/26 11:44 PM, Jan Beulich wrote:
>> --- a/bfd/configure.ac
>> +++ b/bfd/configure.ac
>> @@ -370,14 +370,14 @@ selarchs="$f"
>> tb=
>>
>> elf="elf.lo elflink.lo elf-strtab.lo elf-eh-frame.lo elf-properties.lo
>> - elf-sframe.lo dwarf1.lo dwarf2.lo"
>> + dwarf1.lo dwarf2.lo"
>> coffgen="coffgen.lo dwarf2.lo"
>> coff="cofflink.lo $coffgen"
>> ecoff="ecofflink.lo $coffgen"
>> xcoff="xcofflink.lo $coffgen"
>>
>> elf32_aarch64="elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo elf-attrs.lo"
>> -elf64_aarch64="elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo elf-attrs.lo"
>> +elf64_aarch64="elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo elf-attrs.lo elf-sframe.lo"
>> elf_arc="elf32-arc.lo elf32.lo elf-attrs.lo"
>> elf_arm="elf32-arm.lo elf32.lo elf-attrs.lo elf-vxworks.lo"
>> elf_csky="elf32-csky.lo elf32.lo elf-attrs.lo"
>> @@ -591,7 +591,7 @@ do
>> rx_elf32_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;;
>> rx_elf32_linux_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;;
>> s390_elf32_vec) tb="$tb elf32-s390.lo elf32.lo elf-attrs.lo $elf" ;;
>> - s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo elf-attrs.lo $elf"; target_size=64 ;;
>> + s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo elf-attrs.lo elf-sframe.lo $elf"; target_size=64 ;;
>> score_elf32_be_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
>> score_elf32_le_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
>> sh_coff_vec) tb="$tb coff-sh.lo $coff" ;;
>> @@ -653,9 +653,9 @@ do
>> wasm32_elf32_vec) tb="$tb elf32-wasm32.lo elf32.lo $elf" ;;
>> x86_64_coff_vec) tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
>> x86_64_elf32_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf32.lo $elf"; target_size=64 ;;
>> - x86_64_elf64_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
>> - x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
>> - x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
>> + x86_64_elf64_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf-sframe.lo $elf"; target_size=64 ;;
>> + x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf-sframe.lo $elf"; target_size=64 ;;
>> + x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf-sframe.lo $elf"; target_size=64 ;;
>
> Thanks Jan for the changes.
>
> Is the case of adding elf-sframe.lo to fbsd_vec due to the following
> (config.bfd) ?
>
> x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
> targ_defvec=x86_64_elf64_fbsd_vec
> targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec
> i386_pei_vec x86_64_pe_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec"
> want64=true
> ;;
>
> Also for sol2, do you think we should include elf-sframe.lo ? (I
> understand that your patch is making things cleaner than status quo.)
Not really, no. Right here the goal to "no change for arch-es using SFrame".
> In essence, my concern is "leaking" SHT_GNU_SFRAME section type to
> freebsd and solaris. To that end (unrelated to the current patch), is
> there a good way to detect OS (specifically GNU) in GAS ? I thought
> about doing something like 'endswith (TARGET_OS, "gnu")' ...
See Rainer's reply. Any further reduction of exposure would want to be a
separate change, with suitable justification. I'm not quite sure about all
of the BSDs having picked up GNU extensions, but for the particular case
here (FreeBSD) iirc we have code elsewhere in the codebase which enables
use of them (maybe not all but just some, yet that would likely take a
FreeBSD person to clarify).
Jan
More information about the Binutils
mailing list