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

Richard Earnshaw Richard.Earnshaw@foss.arm.com
Thu Nov 24 12:27:13 GMT 2022


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.

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