From: Yanzhang Wang <yanzhang.w...@intel.com>

We only need to pass options to the linker when static-pie is passed.
There's another patch to enable static-pie in glibc. And we need to
enable in GCC first.

gcc/ChangeLog:

        * config/riscv/linux.h: Pass the static-pie specific options to
          the linker.

Signed-off-by: Yanzhang Wang <yanzhang.w...@intel.com>
---

Have tested with glibc enabled and no regression of gcc found.

 gcc/config/riscv/linux.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
index 7323ff30f70..8901671ddf6 100644
--- a/gcc/config/riscv/linux.h
+++ b/gcc/config/riscv/linux.h
@@ -55,9 +55,10 @@ along with GCC; see the file COPYING3.  If not see
 %{shared} \
   %{!shared: \
     %{!static: \
-      %{rdynamic:-export-dynamic} \
-      -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
-    %{static:-static}}"
+      %{!static-pie: \
+       %{rdynamic:-export-dynamic} \
+       -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
+    %{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}"
 
 #define STARTFILE_PREFIX_SPEC                  \
    "/lib" XLEN_SPEC "/" ABI_SPEC "/ "          \
-- 
2.42.0

Reply via email to