[v2] LoongArch: Fix pr106828 by define hook TARGET_ASAN_SHADOW_OFFSET in loongarch backend.

Message ID 20220907073946.1102002-1-chenglulu@loongson.cn
State New, archived
Headers
Series [v2] LoongArch: Fix pr106828 by define hook TARGET_ASAN_SHADOW_OFFSET in loongarch backend. |

Commit Message

chenglulu Sept. 7, 2022, 7:39 a.m. UTC
  Sorry, asan shadow offset is wrong in v1.

In the file asan_mapping.h line 207:
	#    define ASAN_SHADOW_OFFSET_CONST 0x0000400000000000

So it's should be 1<<46.

------------------------------------
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.
---
 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
  

Comments

Xi Ruoyao Sept. 7, 2022, 8:02 a.m. UTC | #1
On Wed, 2022-09-07 at 15:39 +0800, Lulu Cheng wrote:
> Sorry, asan shadow offset is wrong in v1.
> 
> In the file asan_mapping.h line 207:
>         #    define ASAN_SHADOW_OFFSET_CONST 0x0000400000000000
> 
> So it's should be 1<<46.

LGTM.  I forgot to include this change in r13-2296 :(.

> 
> ------------------------------------
> 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.
> ---
>  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 10acf06ef79..424fa4487f8 100644
> --- a/gcc/config/loongarch/loongarch.cc
> +++ b/gcc/config/loongarch/loongarch.cc
> @@ -6471,6 +6471,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"
> @@ -6665,6 +6675,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 00000000000..190c1db715f
> --- /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'.  */
  
chenglulu Sept. 7, 2022, 9:12 a.m. UTC | #2
在 2022/9/7 下午4:02, Xi Ruoyao 写道:
> On Wed, 2022-09-07 at 15:39 +0800, Lulu Cheng wrote:
>> Sorry, asan shadow offset is wrong in v1.
>>
>> In the file asan_mapping.h line 207:
>>          #    define ASAN_SHADOW_OFFSET_CONST 0x0000400000000000
>>
>> So it's should be 1<<46.
> LGTM.  I forgot to include this change in r13-2296 :(.
pushed to r13-2510.:-)
>
>> ------------------------------------
>> 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.
>> ---
>>   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 10acf06ef79..424fa4487f8 100644
>> --- a/gcc/config/loongarch/loongarch.cc
>> +++ b/gcc/config/loongarch/loongarch.cc
>> @@ -6471,6 +6471,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"
>> @@ -6665,6 +6675,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 00000000000..190c1db715f
>> --- /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'.  */
  
Martin Liška Sept. 7, 2022, 9:58 a.m. UTC | #3
On 9/7/22 09:39, Lulu Cheng wrote:
> |+ This value is taken from the file libsanitizer/asan/asan_mappint.h. */|

s/asan_mappint.h/asan_mapping.h

Cheers,
Martin
  
chenglulu Sept. 7, 2022, 10:01 a.m. UTC | #4
Sorry, I will correct this typo.

Thanks!

在 2022/9/7 下午5:58, Martin Liška 写道:
> On 9/7/22 09:39, Lulu Cheng wrote:
>> |+ This value is taken from the file libsanitizer/asan/asan_mappint.h. */|
> s/asan_mappint.h/asan_mapping.h
>
> Cheers,
> Martin
  

Patch

diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
index 10acf06ef79..424fa4487f8 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -6471,6 +6471,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"
@@ -6665,6 +6675,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 00000000000..190c1db715f
--- /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'.  */