70 lines
2.3 KiB
Diff
70 lines
2.3 KiB
Diff
|
|
From a70fe51d9813d490a89cbc8da1ae4b040bf8b37e Mon Sep 17 00:00:00 2001
|
||
|
|
From: Lulu Cheng <chenglulu@loongson.cn>
|
||
|
|
Date: Wed, 7 Sep 2022 11:25:45 +0800
|
||
|
|
Subject: [PATCH 017/124] LoongArch: Fix pr106828 by define hook
|
||
|
|
TARGET_ASAN_SHADOW_OFFSET in loongarch backend [PR106828].
|
||
|
|
|
||
|
|
gcc/ChangeLog:
|
||
|
|
|
||
|
|
PR target/106828
|
||
|
|
* config/loongarch/loongarch.cc (loongarch_asan_shadow_offset): New.
|
||
|
|
(TARGET_ASAN_SHADOW_OFFSET): New.
|
||
|
|
|
||
|
|
gcc/testsuite/ChangeLog:
|
||
|
|
|
||
|
|
PR target/106828
|
||
|
|
* g++.target/loongarch/pr106828.C: New test.
|
||
|
|
|
||
|
|
Signed-off-by: Peng Fan <fanpeng@loongson.cn>
|
||
|
|
Signed-off-by: ticat_fp <fanpeng@loongson.cn>
|
||
|
|
---
|
||
|
|
gcc/config/loongarch/loongarch.cc | 13 +++++++++++++
|
||
|
|
gcc/testsuite/g++.target/loongarch/pr106828.C | 4 ++++
|
||
|
|
2 files changed, 17 insertions(+)
|
||
|
|
create mode 100644 gcc/testsuite/g++.target/loongarch/pr106828.C
|
||
|
|
|
||
|
|
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
|
||
|
|
index c9187bf81..98c0e26cd 100644
|
||
|
|
--- a/gcc/config/loongarch/loongarch.cc
|
||
|
|
+++ b/gcc/config/loongarch/loongarch.cc
|
||
|
|
@@ -6466,6 +6466,16 @@ loongarch_use_anchors_for_symbol_p (const_rtx symbol)
|
||
|
|
return default_use_anchors_for_symbol_p (symbol);
|
||
|
|
}
|
||
|
|
|
||
|
|
+/* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */
|
||
|
|
+
|
||
|
|
+static unsigned HOST_WIDE_INT
|
||
|
|
+loongarch_asan_shadow_offset (void)
|
||
|
|
+{
|
||
|
|
+ /* We only have libsanitizer support for LOONGARCH64 at present.
|
||
|
|
+ This value is taken from the file libsanitizer/asan/asan_mappint.h. */
|
||
|
|
+ return TARGET_64BIT ? (HOST_WIDE_INT_1 << 46) : 0;
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
/* Initialize the GCC target structure. */
|
||
|
|
#undef TARGET_ASM_ALIGNED_HI_OP
|
||
|
|
#define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
|
||
|
|
@@ -6660,6 +6670,9 @@ loongarch_use_anchors_for_symbol_p (const_rtx symbol)
|
||
|
|
#undef TARGET_USE_ANCHORS_FOR_SYMBOL_P
|
||
|
|
#define TARGET_USE_ANCHORS_FOR_SYMBOL_P loongarch_use_anchors_for_symbol_p
|
||
|
|
|
||
|
|
+#undef TARGET_ASAN_SHADOW_OFFSET
|
||
|
|
+#define TARGET_ASAN_SHADOW_OFFSET loongarch_asan_shadow_offset
|
||
|
|
+
|
||
|
|
struct gcc_target targetm = TARGET_INITIALIZER;
|
||
|
|
|
||
|
|
#include "gt-loongarch.h"
|
||
|
|
diff --git a/gcc/testsuite/g++.target/loongarch/pr106828.C b/gcc/testsuite/g++.target/loongarch/pr106828.C
|
||
|
|
new file mode 100644
|
||
|
|
index 000000000..190c1db71
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/gcc/testsuite/g++.target/loongarch/pr106828.C
|
||
|
|
@@ -0,0 +1,4 @@
|
||
|
|
+/* { dg-do-preprocess } */
|
||
|
|
+/* { dg-options "-mabi=lp64d -fsanitize=address" } */
|
||
|
|
+
|
||
|
|
+/* Tests whether the compiler supports compile option '-fsanitize=address'. */
|
||
|
|
--
|
||
|
|
2.33.0
|
||
|
|
|