aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2014-09-26 13:07:42 +0000
committerChristophe Lyon <clyon@gcc.gnu.org>2014-09-26 15:07:42 +0200
commita3125fc2339aea0f552800ae4a052af49e16e54e (patch)
tree9fce4544423abd6254839964208ba2182026f2c4 /gcc
parentbf898b300eea2cd87a1afcadd886c7ae3d593091 (diff)
downloadgcc-a3125fc2339aea0f552800ae4a052af49e16e54e.zip
gcc-a3125fc2339aea0f552800ae4a052af49e16e54e.tar.gz
gcc-a3125fc2339aea0f552800ae4a052af49e16e54e.tar.bz2
[AArch64] Enable Address Sanitizer.
2014-09-26 Christophe Lyon <christophe.lyon@linaro.org> [AArch64] Enable Address Sanitizer. gcc/ * config/aarch64/aarch64-linux.h (ASAN_CC1_SPEC): Define. (CC1_SPEC): Define. * config/aarch64/aarch64.c (aarch64_asan_shadow_offset): New function. (TARGET_ASAN_SHADOW_OFFSET): Define. libsanitzer/ * configure.tgt: Enable build on aarch64*-linux. From-SVN: r215642
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64-linux.h6
-rw-r--r--gcc/config/aarch64/aarch64.c11
3 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d92a705..b003923 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-09-26 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * config/aarch64/aarch64-linux.h (ASAN_CC1_SPEC): Define.
+ (CC1_SPEC): Define.
+ * config/aarch64/aarch64.c (aarch64_asan_shadow_offset): New function.
+ (TARGET_ASAN_SHADOW_OFFSET): Define.
+
2014-09-26 Martin Liska <mliska@suse.cz>
* cgraph.c (cgraph_node::release_body): New argument keep_arguments
diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
index 1731432..3fbde93 100644
--- a/gcc/config/aarch64/aarch64-linux.h
+++ b/gcc/config/aarch64/aarch64-linux.h
@@ -23,6 +23,12 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+#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
+
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
#define LINUX_TARGET_LINK_SPEC "%{h*} \
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 68c78f6..5144c35 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -9777,6 +9777,14 @@ aarch64_expand_movmem (rtx *operands)
return true;
}
+/* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */
+
+static unsigned HOST_WIDE_INT
+aarch64_asan_shadow_offset (void)
+{
+ return (HOST_WIDE_INT_1 << 36);
+}
+
#undef TARGET_ADDRESS_COST
#define TARGET_ADDRESS_COST aarch64_address_cost
@@ -10023,6 +10031,9 @@ aarch64_expand_movmem (rtx *operands)
#undef TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS
#define TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS true
+#undef TARGET_ASAN_SHADOW_OFFSET
+#define TARGET_ASAN_SHADOW_OFFSET aarch64_asan_shadow_offset
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-aarch64.h"