[PATCH][PUSHED] readelf: Do not require EI_OSABI for IFUNC.

Martin Liška mliska@suse.cz
Thu Nov 24 12:45:34 GMT 2022


On 11/24/22 13:27, Richard Earnshaw wrote:
> On 24/11/2022 12:18, Martin Liška wrote:
>> Pushed as it's pre-approved by Nick.
>>
>> Cheers,
>> Martin
>>
>>     PR29718
>>
>> binutils/ChangeLog:
>>
>>     * readelf.c (get_symbol_type): Consider STT_GNU_IFUNC as
>>     reserved name.
> 
> STT_GNU_IFUNC is defined in the OS-specific reserved space.  How can it be globally reserved? It can't have meaning unless the OS ABI defines it as this.

https://sourceware.org/bugzilla/show_bug.cgi?id=29718#c0

Please reply to this PR.

Thanks,
Martin

> 
> R.
> 
> 
>> ---
>>   binutils/readelf.c | 8 +++-----
>>   1 file changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/binutils/readelf.c b/binutils/readelf.c
>> index 1bd6df9448a..365c1ede0a1 100644
>> --- a/binutils/readelf.c
>> +++ b/binutils/readelf.c
>> @@ -12724,6 +12724,9 @@ get_symbol_type (Filedata * filedata, unsigned int type)
>>       case STT_TLS:    return "TLS";
>>       case STT_RELC:      return "RELC";
>>       case STT_SRELC:     return "SRELC";
>> +    case STT_GNU_IFUNC: return "IFUNC"; /* As mentioned in PR29718, do not
>> +                       require EI_OSABI as IFUNC is
>> +                       a reseved name.  */
>>       default:
>>         if (type >= STT_LOPROC && type <= STT_HIPROC)
>>       {
>> @@ -12748,11 +12751,6 @@ get_symbol_type (Filedata * filedata, unsigned int type)
>>           return "HP_STUB";
>>           }
>>   -      if (type == STT_GNU_IFUNC
>> -          && (filedata->file_header.e_ident[EI_OSABI] == ELFOSABI_GNU
>> -          || filedata->file_header.e_ident[EI_OSABI] == ELFOSABI_FREEBSD))
>> -        return "IFUNC";
>> -
>>         snprintf (buff, sizeof (buff), _("<OS specific>: %d"), type);
>>       }
>>         else



More information about the Binutils mailing list