From 34c5627c9cfea3eecbfbe3a1edeaaa703ddee553 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 15 Feb 2019 23:08:49 +0000 Subject: [PATCH] linux.h (ASAN_CC1_SPEC): Define. * config/sparc/linux.h (ASAN_CC1_SPEC): Define. (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC and ASAN_CC1_SPEC. * config/sparc/linux64.h (ASAN_CC1_SPEC): Likewise. (CC1_SPEC): Likewise. * config/sparc/sparc.c (sparc_asan_shadow_offset): Adjust for 64-bit. From-SVN: r268950 --- gcc/ChangeLog | 8 ++++++++ gcc/config/sparc/linux.h | 9 +++++---- gcc/config/sparc/linux64.h | 19 ++++++++++--------- gcc/config/sparc/sparc.c | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63d1f41..c430cfd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2019-02-15 Eric Botcazou + * config/sparc/linux.h (ASAN_CC1_SPEC): Define. + (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC and ASAN_CC1_SPEC. + * config/sparc/linux64.h (ASAN_CC1_SPEC): Likewise. + (CC1_SPEC): Likewise. + * config/sparc/sparc.c (sparc_asan_shadow_offset): Adjust for 64-bit. + +2019-02-15 Eric Botcazou + * asan.c (asan_emit_stack_protection): Use full-sized mask to align the base address on 64-bit strict-alignment platforms. diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index 2db9ea2..08476f1 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -54,10 +54,11 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); #define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS -/* This is for -profile to use -lc_p instead of -lc. */ -#undef CC1_SPEC -#define CC1_SPEC "%{profile:-p} \ -" +#undef ASAN_CC1_SPEC +#define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}" + +#undef CC1_SPEC +#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index 21e1300..bbf5bab 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -143,24 +143,25 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); #define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS -#undef CC1_SPEC +#undef ASAN_CC1_SPEC +#define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}" + +#undef CC1_SPEC #if DEFAULT_ARCH32_P -#define CC1_SPEC "%{profile:-p} \ -%{m32:%{m64:%emay not use both -m32 and -m64}} \ +#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ +"%{m32:%{m64:%emay not use both -m32 and -m64}} \ %{m64:-mptr64 -mstack-bias -mlong-double-128 \ %{!mcpu*:-mcpu=ultrasparc} \ - %{!mno-vis:%{!mcpu=v9:-mvis}}} \ -" + %{!mno-vis:%{!mcpu=v9:-mvis}}}" #else -#define CC1_SPEC "%{profile:-p} \ -%{m32:%{m64:%emay not use both -m32 and -m64}} \ +#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ +"%{m32:%{m64:%emay not use both -m32 and -m64}} \ %{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ %{!mcpu*:-mcpu=cypress}} \ %{mv8plus:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ %{!mcpu*:-mcpu=v9}} \ %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ -%{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}} \ -" +%{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}}" #endif /* Support for a compile-time default CPU, et cetera. The rules are: diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 8bb59a6..faddd06 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -12524,7 +12524,7 @@ sparc_init_machine_status (void) static unsigned HOST_WIDE_INT sparc_asan_shadow_offset (void) { - return TARGET_ARCH64 ? HOST_WIDE_INT_C (0x7fff8000) : (HOST_WIDE_INT_1 << 29); + return TARGET_ARCH64 ? (HOST_WIDE_INT_1 << 43) : (HOST_WIDE_INT_1 << 29); } /* This is called from dwarf2out.c via TARGET_ASM_OUTPUT_DWARF_DTPREL. -- 2.7.4