[PATCH] aarch64: fix static PIE start code for BTI [BZ #27068]

Szabolcs Nagy szabolcs.nagy@arm.com
Tue Dec 15 14:29:21 GMT 2020


The 12/15/2020 14:16, Szabolcs Nagy via Libc-alpha wrote:
> From: Guillaume Gardet <guillaume.gardet@arm.com>
> 
> A bti c was missing from rcrt1.o which made all -static-pie
> binaries fail at program startup on BTI enabled systems.
> 
> Fixes bug 27068.

note that normally BTI c is added by the ENTRY macro which
is why it was missed here.

__wrap_main could be made a separate function with its own
ENTRY/END macros, but i think it is semantically not a
separate function just a local label used as a work around
to avoid using unprocessed relative relocs for main before
the static pie binary does self relocation so explicit bti
is appropriate.

i'm commiting this as is.

> ---
>  sysdeps/aarch64/start.S | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S
> index 108f602721..1998ea95d4 100644
> --- a/sysdeps/aarch64/start.S
> +++ b/sysdeps/aarch64/start.S
> @@ -99,6 +99,7 @@ ENTRY(_start)
>  	   because crt1.o and rcrt1.o share code and the later must avoid the
>  	   use of GOT relocations before __libc_start_main is called.  */
>  __wrap_main:
> +	BTI_C
>  	b	main
>  #endif
>  END(_start)
> -- 
> 2.17.1
> 

-- 


More information about the Libc-alpha mailing list