summaryrefslogtreecommitdiff
path: root/libgcc/config.host
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-24 09:00:22 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-24 09:00:22 +0000
commit80fc7cb79bc5089fb7b19a90dab4175804a561b7 (patch)
treef52d2a26a4f1a076c6412585f560c29447771e77 /libgcc/config.host
parentba24ad380cf6ee626e1a523b5a3215072f3d056a (diff)
downloadgcc-80fc7cb79bc5089fb7b19a90dab4175804a561b7.tar.gz
Support PIE on Solaris
gcc/testsuite: * lib/target-supports.exp (check_effective_target_pie): Check for PIE support on Solaris 11.x and 12. libgcc: * config.host (*-*-solaris2*): Add t-crtstuff-pic to tmake_file. Add crtbeginS.o, crtendS.o to extra_parts if libgcc_cv_solaris_crts. * config/sol2/gmon.c: (monstartup): Don't write trailing NUL of messages. (internal_mcount): Likewise. * config/sol2/t-sol2 (crtp.o, crtpg.o, gmon.o): Compile with crt_compile, add CRTSTUFF_T_CFLAGS_S. gcc: * configure.ac (gcc_cv_ld_pie): Check for gld >= 2.26 on Solaris. Check for ld -type pie on Solaris 11.x and 12. * configure: Regenerate. * config.in: Regenerate. * gcc.c (LD_PIE_SPEC): Allow redefinition. * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Define. (STARTFILE_SPEC): Use it. (ENDFILE_CRTEND_SPEC): Define. (ENDFILE_SPEC): Use it and ENDFILE_ARCH_SPEC. (SUBTARGET_EXTRA_SPECS): Add STARTFILE_CRTBEGIN_SPEC, ENDFILE_ARCH_SPEC, ENDFILE_CRTEND_SPEC. [HAVE_LD_PIE && HAVE_SOLARIS_CRTS] (LD_PIE_SPEC): Define. (!(HAVE_LD_PIE && HAVE_SOLARIS_CRTS)] (LINK_PIE_SPEC): Define. * config/i386/sol2.h (ENDFILE_SPEC): Remove. (ENDFILE_ARCH_SPEC): Define. * config/sparc/sol2.h (ENDFILE_ARCH_SPEC): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228078 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc/config.host')
-rw-r--r--libgcc/config.host4
1 files changed, 3 insertions, 1 deletions
diff --git a/libgcc/config.host b/libgcc/config.host
index 6c8b97bfc01..2c6475625c9 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -267,7 +267,7 @@ case ${host} in
*-*-solaris2*)
# Unless linker support and dl_iterate_phdr are present,
# unwind-dw2-fde-dip.c automatically falls back to unwind-dw2-fde.c.
- tmake_file="$tmake_file sol2/t-sol2 t-eh-dw2-dip t-libgcc-pic t-slibgcc t-slibgcc-elf-ver"
+ tmake_file="$tmake_file sol2/t-sol2 t-eh-dw2-dip t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-elf-ver"
if test $with_gnu_ld = yes; then
tmake_file="$tmake_file t-slibgcc-gld"
else
@@ -280,6 +280,8 @@ case ${host} in
# Solaris 11.x and 12 provide crt1.o, crti.o, and crtn.o as part of the
# base system. crtp.o and crtpg.o implement the compiler-dependent parts.
extra_parts="$extra_parts crtp.o crtpg.o"
+ # If the Solaris CRTs are present, both ld and gld will have PIE support.
+ extra_parts="$extra_parts crtbeginS.o crtendS.o"
else
case ${host} in
i?86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*)