[PATCH 2/4] gas: sframe: i386: have the backend specify the RA too
Indu Bhagat
indu.bhagat@oracle.com
Thu May 15 17:55:01 GMT 2025
On 5/13/25 7:59 AM, Jan Beulich wrote:
> On 13.05.2025 16:54, Jens Remus wrote:
>> On 13.05.2025 14:57, Jan Beulich wrote:
>>> On 11.05.2025 09:35, Indu Bhagat wrote:
>>>> --- a/gas/config/tc-i386.h
>>>> +++ b/gas/config/tc-i386.h
>>>> @@ -462,6 +462,12 @@ extern unsigned int x86_sframe_cfa_sp_reg;
>>>> extern unsigned int x86_sframe_cfa_fp_reg;
>>>> #define SFRAME_CFA_FP_REG x86_sframe_cfa_fp_reg
>>>>
>>>> +/* The return address DWARF register number for SFrame purposes. Although for
>>>> + AMD64, RA tracking is disabled, specific constructs, like for indicating
>>>> + the _start function, may use it. */
>>>> +extern unsigned int x86_sframe_cfa_ra_reg;
>>>> +#define SFRAME_CFA_RA_REG x86_sframe_cfa_ra_reg
>>>
>>> Why is it, btw, that this needs a variable which never changes? IOW why
>>> not simply
>>>
>>> #define SFRAME_CFA_RA_REG REG_<whatever>
>>>
>>> ? Same actually goes for x86_sframe_cfa_{fp,sp}_reg as well.
>>
>> I do have an experimental patch on top of my S390 series that
>> temporarily changes sframe_cfa_ra_reg (defined to s390_sframe_cfa_ra_reg
>> on S390) to represent .cfi_return_column in SFrame on S390.
>>
>> Either all targets need to define sframe_cfa_ra_reg so that it can serve
>> as a lvalue or I need to guard this S390-specific code with TC_S390. So
>> far I had been doing the latter, as x86-64 did not define
>> sframe_cfa_ra_reg at all, which this series would change.
>
> Sure, if there is a need for it to be usable as lvalue, that's okay-ish.
> I'd still prefer it to not require a variable on targets where such
> isn't needed, or as a 2nd best option have that variable be "const" on
> targets where it never changes. Such does not just (normally) produce
> better code, but also serves kind of a doc purpose (as to the intentions
> with such variables / values).
>
Okay. I have changed this to use const variables on x86 backend.
More information about the Binutils
mailing list