On Tue, Jul 19, 2022 at 02:21:05PM -0600, lancethepants wrote:
> The commit mirros code from aarch64 to handle -static-pie.
> Tested with uclibc-ng and musl c-standard libraries.
> 
> Signed-off-by: Lance Fredrickson <lancethepa...@gmail.com>
> ---
>  gcc/config/arm/linux-elf.h | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
> index df3da67c4f0..70f71b051a3 100644
> --- a/gcc/config/arm/linux-elf.h
> +++ b/gcc/config/arm/linux-elf.h
> @@ -66,9 +66,10 @@
>     %{static:-Bstatic} \
>     %{shared:-shared} \
>     %{symbolic:-Bsymbolic} \
> -   %{!static: \
> +   %{!static:%{!static-pie: \
>       %{rdynamic:-export-dynamic} \
> -     %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
> +     %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}} \
> +   %{static-pie:-Bstatic -pie --no-dynamic-linker -z text} \
>     -X \
>     %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
>     SUBTARGET_EXTRA_LINK_SPEC

Hi,

This patch seems to have gotten a bit mangled when it was submitted,
so perhaps that's why it was ignored, but it would be great to get this
functionality in gcc.

In particular, systemd has begun relying on -static-pie for EFI
support, and has to implement workarounds (manually passing these flags
to the linker) for architectures that don't support -static-pie (see
[1], [2]).

Thanks, Ben

[1] https://github.com/NixOS/nixpkgs/pull/243242#issuecomment-1741835837
[2] https://github.com/systemd/systemd/issues/29381

Reply via email to