aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <siarheit@google.com>2020-07-14 07:48:42 +0100
committerSergei Trofimovich <siarheit@google.com>2020-07-20 20:46:30 +0100
commit87891d5eafe8d1de90b9d9b056eca81c508d1c77 (patch)
tree2d00b11328673304d65108966fdce7de759c43fa
parent4d1c5b4957db2cb07f1053b7b87767275497d52e (diff)
downloadgcc-87891d5eafe8d1de90b9d9b056eca81c508d1c77.zip
gcc-87891d5eafe8d1de90b9d9b056eca81c508d1c77.tar.gz
gcc-87891d5eafe8d1de90b9d9b056eca81c508d1c77.tar.bz2
sparc/sparc64: use crtendS.o for default-pie executables [PR96190]
In --enable-default-pie mode compiler should switch from using crtend.o to crtendS.o. On sparc it is especially important because crtend.o contains PIC-unfriendly code. We use GNU_USER_TARGET_ENDFILE_SPEC as a baseline spec to get crtendS.o instead of crtend.o in !no-pie mode. gcc: 2020-07-14 Sergei Trofimovich <siarheit@google.com> PR target/96190 * config/sparc/linux.h (ENDFILE_SPEC): Use GNU_USER_TARGET_ENDFILE_SPEC to get crtendS.o for !no-pie mode. * config/sparc/linux64.h (ENDFILE_SPEC): Ditto.
-rw-r--r--gcc/config/sparc/linux.h10
-rw-r--r--gcc/config/sparc/linux64.h10
2 files changed, 4 insertions, 16 deletions
diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
index 81201e6..63853e6 100644
--- a/gcc/config/sparc/linux.h
+++ b/gcc/config/sparc/linux.h
@@ -27,16 +27,10 @@ along with GCC; see the file COPYING3. If not see
} \
while (0)
-/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on
- the GNU/Linux magical crtend.o file (see crtstuff.c) which
- provides part of the support for getting C++ file-scope static
- object constructed before entering `main', followed by a normal
- GNU/Linux "finalizer" file, `crtn.o'. */
-
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
- %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ GNU_USER_TARGET_ENDFILE_SPEC \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
/* -mcpu=native handling only makes sense with compiler running on
a SPARC chip. */
diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
index a1a0efd..19ce84d 100644
--- a/gcc/config/sparc/linux64.h
+++ b/gcc/config/sparc/linux64.h
@@ -44,16 +44,10 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_CPU64_DEFAULT_SPEC
#define ASM_CPU64_DEFAULT_SPEC "-Av9a"
-/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on
- the GNU/Linux magical crtend.o file (see crtstuff.c) which
- provides part of the support for getting C++ file-scope static
- object constructed before entering `main', followed by a normal
- GNU/Linux "finalizer" file, `crtn.o'. */
-
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
- %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ GNU_USER_TARGET_ENDFILE_SPEC \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
/* The default code model. */
#undef SPARC_DEFAULT_CMODEL