Hi Mark,

Unfortunately, the only reference I am aware of for GNU attributes is
the GCC compiler source itself; these constants are defined in
gcc/config/rs6000/rs6000.cc in rs6000_elf_file_end.

Best,
-Anna

On May 27, 2025, at 8:19 AM, Mark Wielaard <m...@klomp.org> wrote:
> Hi,
> 
> On Tue, 2025-05-27 at 00:05 -0500, A. Wilcox wrote:
>> When an explicit type of long double is specified in the ELF
>> GNU_Power_ABI_FP attribute, elflint and friends were erroring out:
>> 
>>    section [36] '.gnu.attributes': offset 15: unrecognized GNU_Power_ABI_FP 
>> attribute value 9
>> 
>> Add the different long double tags to fp_kinds so that these values
>> are correctly recognised and printed.
> 
> This is probably correct, but do you happen to have a reference where
> these GNU_Power_ABI_FP attribute are defined? Then we can add that to
> the source as comment so we can easily look them up in the future.
> 
> Cheers,
> 
> Mark
> 
>> Signed-off-by: A. Wilcox <awil...@wilcox-tech.com>
>> ---
>> backends/ppc_attrs.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>> 
>> diff --git a/backends/ppc_attrs.c b/backends/ppc_attrs.c
>> index 48d7129d..6b00bccd 100644
>> --- a/backends/ppc_attrs.c
>> +++ b/backends/ppc_attrs.c
>> @@ -52,6 +52,18 @@ ppc_check_object_attribute (Ebl *ebl __attribute__ 
>> ((unused)),
>>    "Hard float",
>>    "Soft float",
>>    "Single-precision hard float",
>> +    "Hard or soft float (IBM style long doubles)",
>> +    "Hard float (IBM style long doubles)",
>> +    "Soft float (IBM style long doubles)",
>> +    "Single-precision hard float (IBM style long doubles)",
>> +    "Hard or soft float (64-bit long doubles)",
>> +    "Hard float (64-bit long doubles)",
>> +    "Soft float (64-bit long doubles)",
>> +    "Single-precision hard float (64-bit long doubles)",
>> +    "Hard or soft float (IEEE 128-bit long doubles)",
>> +    "Hard float (IEEE 128-bit long doubles)",
>> +    "Soft float (IEEE 128-bit long doubles)",
>> +    "Single-precision hard float (IEEE 128-bit long doubles)",
>>  };
>> if (value < sizeof fp_kinds / sizeof fp_kinds[0])
>>  *value_name = fp_kinds[value];

Reply via email to