[PATCH v5 4/4] gas: sframe: Represent .cfi_undefined RA as FRE without offsets

Indu Bhagat indu.bhagat@oracle.com
Mon Sep 1 22:36:13 GMT 2025


On 7/30/25 1:30 AM, Indu wrote:
>> @@ -555,6 +558,7 @@ output_sframe_row_entry (symbolS *fde_start_addr,
>>     unsigned int fre_num_offsets;
>>     unsigned int fre_offset_size;
>>     unsigned int fre_base_reg;
>> +  bool fre_mangled_ra_p;
>>     expressionS exp;
>>     unsigned int fre_addr_size;
>> @@ -580,14 +584,30 @@ output_sframe_row_entry (symbolS *fde_start_addr,
>>   #endif
>>     /* Create the fre_info using the CFA base register, number of 
>> offsets and max
>> -     size of offset in this frame row entry.  */
>> -  fre_base_reg = get_fre_base_reg_id (sframe_fre);
>> -  fre_num_offsets = get_fre_num_offsets (sframe_fre);
>> -  fre_offset_size = sframe_get_fre_offset_size (sframe_fre);
>> +     size of offset in this frame row entry.  Represent RA undefined 
>> as FRE
>> +     without any offsets and all FRE info word fields zeroed.  */
>> +  if (sframe_fre->ra_undefined_p)
>> +    {
>> +      fre_base_reg = 0;
>> +      fre_num_offsets = 0;
>> +      fre_offset_size = 0;
>> +      fre_mangled_ra_p = 0;
>> +    }
>> +  else
>> +    {
>> +      fre_base_reg = get_fre_base_reg_id (sframe_fre);
>> +      fre_num_offsets = get_fre_num_offsets (sframe_fre);
>> +      fre_offset_size = sframe_get_fre_offset_size (sframe_fre);
>> +      fre_mangled_ra_p = sframe_fre->mangled_ra_p;
>> +    }
>>     fre_info = sframe_set_fre_info (fre_base_reg, fre_num_offsets,
>> -                  fre_offset_size, sframe_fre->mangled_ra_p);
>> +                  fre_offset_size, fre_mangled_ra_p);
> 
> Perhaps this can be avoided by reseting as necessary in 
> sframe_xlate_do_cfi_undefined?

Hi Jens,

In light of our ongoing discussion on the V4 thread of this series, this 
specific comment can be disregarded.

Thanks
Indu


More information about the Binutils mailing list