diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2015-09-24 09:00:22 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2015-09-24 09:00:22 +0000 |
commit | df2a1cc48b45a5493646e14bcd81eff7d684e15b (patch) | |
tree | f52d2a26a4f1a076c6412585f560c29447771e77 /libgcc/config/sol2/gmon.c | |
parent | 2d11044217edd9168eafea1c8c60603f87b0e00d (diff) | |
download | gcc-df2a1cc48b45a5493646e14bcd81eff7d684e15b.zip gcc-df2a1cc48b45a5493646e14bcd81eff7d684e15b.tar.gz gcc-df2a1cc48b45a5493646e14bcd81eff7d684e15b.tar.bz2 |
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.
From-SVN: r228078
Diffstat (limited to 'libgcc/config/sol2/gmon.c')
-rw-r--r-- | libgcc/config/sol2/gmon.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libgcc/config/sol2/gmon.c b/libgcc/config/sol2/gmon.c index f641958..81a0346 100644 --- a/libgcc/config/sol2/gmon.c +++ b/libgcc/config/sol2/gmon.c @@ -114,12 +114,12 @@ monstartup (char *lowpc, char *highpc) monsize = (s_textsize / HISTFRACTION) + sizeof (struct phdr); buffer = sbrk (monsize); if (buffer == (void *) -1) { - write (STDERR_FILENO, MSG, sizeof (MSG)); + write (STDERR_FILENO, MSG, sizeof (MSG) - 1); return; } froms = sbrk (s_textsize / HASHFRACTION); if (froms == (void *) -1) { - write (STDERR_FILENO, MSG, sizeof (MSG)); + write (STDERR_FILENO, MSG, sizeof (MSG) - 1); froms = NULL; return; } @@ -131,7 +131,7 @@ monstartup (char *lowpc, char *highpc) } tos = sbrk (tolimit * sizeof (struct tostruct)); if (tos == (void *) -1) { - write (STDERR_FILENO, MSG, sizeof (MSG)); + write (STDERR_FILENO, MSG, sizeof (MSG) - 1); froms = NULL; tos = NULL; return; @@ -429,7 +429,7 @@ internal_mcount (char *selfpc, unsigned short *frompcindex) profiling++; #define TOLIMIT "mcount: tos overflow\n" - write (STDERR_FILENO, TOLIMIT, sizeof (TOLIMIT)); + write (STDERR_FILENO, TOLIMIT, sizeof (TOLIMIT) - 1); goto out; } |