+2019-02-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * 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 <ebotcazou@adacore.com>
* asan.c (asan_emit_stack_protection): Use full-sized mask to align
#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"
#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:
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);
}
\f
/* This is called from dwarf2out.c via TARGET_ASM_OUTPUT_DWARF_DTPREL.