[V2] arm: add -static-pie support

Message ID cc111d36-cb4b-6638-331c-11b99e5e899c@gmail.com
State Under Review
Headers
Series [V2] arm: add -static-pie support |

Commit Message

Lance Fredrickson July 20, 2022, 2:06 p.m. UTC
  This patch adds -static-pie support for the arm architecture. aarch64 
had the appropriate code for handling -static-pie, so this just mirrors 
the code found there.  Tested with uclibc-ng and musl c-standard 
libraries to produce static-pie binaries.  Re-submitted with minor spell 
check fix.
From 4e122adfea2a6247f2da0c094f3203cbdf2a578c Mon Sep 17 00:00:00 2001
From: lancethepants <lancethepants@gmail.com>
Date: Tue, 19 Jul 2022 14:21:05 -0600
Subject: [PATCH V2] arm: add -static-pie support

The commit mirrors code from aarch64 to handle -static-pie.
Tested with uclibc-ng and musl c-standard libraries.

Signed-off-by: Lance Fredrickson <lancethepants@gmail.com>
---
 gcc/config/arm/linux-elf.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Lance Fredrickson Aug. 4, 2022, 4:47 p.m. UTC | #1
Just a follow up trying to get some eyes on my static-pie patch 
submission for arm.
Feedback welcome.
https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598610.html

thanks,
Lance Fredrickson
  
Ramana Radhakrishnan Aug. 10, 2022, 8:30 p.m. UTC | #2
Hi Lance,

Thanks for your contribution - looks like your first one to GCC ?

The patch looks good to me, though it should probably go through a
full test suite run on arm-linux-gnueabihf and get a ChangeLog - see
here for more https://gcc.gnu.org/contribute.html#patches.

This is probably small enough to go under the 10 line rule but since
you've used Signed-off-by in your patch, is that indicating you are
contributing under DCO rules -
https://gcc.gnu.org/contribute.html#legal ?

regards
Ramana


On Thu, Aug 4, 2022 at 5:48 PM Lance Fredrickson via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Just a follow up trying to get some eyes on my static-pie patch
> submission for arm.
> Feedback welcome.
> https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598610.html
>
> thanks,
> Lance Fredrickson
  
Lance Fredrickson Aug. 16, 2022, 3:05 a.m. UTC | #3
Yes, this is a 1st submission.
Yes, I guess I was going for DCO rules.
I will look at running the test suite. Does this need to be done on the 
target? because my arm target is a measly dual core 1ghz embedded chip 
and low ram. Netgear R7000 router actually.

regards
Lance

On 8/10/2022 2:30 PM, Ramana Radhakrishnan wrote:
> Hi Lance,
>
> Thanks for your contribution - looks like your first one to GCC ?
>
> The patch looks good to me, though it should probably go through a
> full test suite run on arm-linux-gnueabihf and get a ChangeLog - see
> here for more https://gcc.gnu.org/contribute.html#patches.
>
> This is probably small enough to go under the 10 line rule but since
> you've used Signed-off-by in your patch, is that indicating you are
> contributing under DCO rules -
> https://gcc.gnu.org/contribute.html#legal ?
>
> regards
> Ramana
>
>
> On Thu, Aug 4, 2022 at 5:48 PM Lance Fredrickson via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>> Just a follow up trying to get some eyes on my static-pie patch
>> submission for arm.
>> Feedback welcome.
>> https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598610.html
>>
>> thanks,
>> Lance Fredrickson
  
Andrea Corallo Sept. 5, 2022, 1:13 p.m. UTC | #4
Lance Fredrickson via Gcc-patches <gcc-patches@gcc.gnu.org> writes:

> Yes, this is a 1st submission.
> Yes, I guess I was going for DCO rules.
> I will look at running the test suite. Does this need to be done on
> the target? because my arm target is a measly dual core 1ghz embedded
> chip and low ram. Netgear R7000 router actually.

Hi Lance,

you should be able to use qemu to run arm-linux-gnueabihf binaries and
as a consequance the testsuite if you prefer.

BR

  Andrea
  

Patch

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