[PATCH v8 02/19] gas: move code for object attribute parsing into obj-elf-attr.c
Jan Beulich
jbeulich@suse.com
Mon Aug 4 11:39:04 GMT 2025
On 04.08.2025 12:37, Matthieu Longo wrote:
> On 2025-07-31 14:14, Jan Beulich wrote:
>> On 15.07.2025 13:39, Matthieu Longo wrote:
>>> --- a/gas/configure.ac
>>> +++ b/gas/configure.ac
>>> @@ -454,6 +454,19 @@ changequote([,])dnl
>>> ;;
>>> esac
>>>
>>> + # Does the target support Object Attributes ?
>>> + case ${cpu_type} in
>>> + arc* | arm* | csky | m68k | mips* | msp430 | powerpc* \
>>> + | riscv* | s390* | sparc* | tic6x)
>>> + for f in config/obj-elf-attr.o; do
>>> + case " $extra_objects " in
>>> + *" $f "*) ;;
>>> + *) extra_objects="$extra_objects $f" ;;
>>> + esac
>>> + done
>>> + ;;
>>> + esac
>>> +
>>> # Any other special object files needed ?
>>> case ${cpu_type} in
>>
>> Looking at patch 04 I came to wonder: How does this limit addition of the
>> extra object file to ELF targets?
>
> The code in the C file is surrounded by TC_OBJ_ATTR that is not set for
> targets without no support for object attributes like x86_64. The change
> in gas/configure.ac ensures that the file is not built.
>
> After patch 4,
> - for targets with no support for OA, nothing change. obj-elf-attr.c is
> still not built.
> - for targets supporting only OAv1, the file is included, TC_OBJ_ATTR is
> set but only TC_OBJ_ATTR_v1 is set. So any OAv2-only code is disabled
> and won't be compiled.
> - for targets supporting only OAv2, same thing but TC_OBJ_ATTR_v2 is set
> instead of TC_OBJ_ATTR_v1.
> - if any target decides to migrate to OAv2, they can enable both OAv1
> and OAv2 to support both for a transition period.
And for (CPU) targets supporting ELF and whatever other format(s), the
enabling of TC_OBJ_ATTR_v<N> is then suitably guarded in tc-*.h? Okay,
that's fine then.
> The addition of the extra object file will always happen when the target
> supports OA. From my perspective, I don't see much benefit of splitting
> OAv1 and OAv2 code in three different files (one for the generic code,
> and the others two for OAv1 and OAv2). The quantity of code seemed too
> small to do so.
>
> Since the result is the same after compilation, it seems that your
> concern is more related to code organization. Please let me know what is
> your concern.
If no dead code is included, all is fine. It just feels counterintuitive
to me to frame an entire source file by #ifdef, hence why I didn't suspect
that as a "solution".
Jan
More information about the Binutils
mailing list