mips.c (mips_asan_shadow_offset): New function.
authorHans-Peter Nilsson <hp@axis.com>
Thu, 26 Apr 2018 01:21:32 +0000 (01:21 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Thu, 26 Apr 2018 01:21:32 +0000 (01:21 +0000)
* config/mips/mips.c (mips_asan_shadow_offset): New function.
(TARGET_ASAN_SHADOW_OFFSET): Define.
* config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
true for -fsanitize=address.

Co-Authored-By: Jean Lee <xiaoyur347@gmail.com>
From-SVN: r259666

gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.h

index f00fdd8..dd88190 100644 (file)
@@ -1,3 +1,11 @@
+2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
+           Jean Lee  <xiaoyur347@gmail.com>
+
+       * config/mips/mips.c (mips_asan_shadow_offset): New function.
+       (TARGET_ASAN_SHADOW_OFFSET): Define.
+       * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
+       true for -fsanitize=address.
+
 2018-04-25  Mark Wielaard  <mark@klomp.org>
 
        * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
index aabd4b1..bfe64bb 100644 (file)
@@ -22307,6 +22307,14 @@ mips_constant_alignment (const_tree exp, HOST_WIDE_INT align)
   return align;
 }
 
+/* Implement the TARGET_ASAN_SHADOW_OFFSET hook.  */
+
+static unsigned HOST_WIDE_INT
+mips_asan_shadow_offset (void)
+{
+  return 0x0aaa0000;
+}
+
 /* Implement TARGET_STARTING_FRAME_OFFSET.  See mips_compute_frame_info
    for details about the frame layout.  */
 
@@ -22618,6 +22626,9 @@ mips_starting_frame_offset (void)
 #undef TARGET_CONSTANT_ALIGNMENT
 #define TARGET_CONSTANT_ALIGNMENT mips_constant_alignment
 
+#undef TARGET_ASAN_SHADOW_OFFSET
+#define TARGET_ASAN_SHADOW_OFFSET mips_asan_shadow_offset
+
 #undef TARGET_STARTING_FRAME_OFFSET
 #define TARGET_STARTING_FRAME_OFFSET mips_starting_frame_offset
 
index 84ae675..f290560 100644 (file)
@@ -2289,7 +2289,8 @@ enum reg_class
 
 #define STACK_GROWS_DOWNWARD 1
 
-#define FRAME_GROWS_DOWNWARD flag_stack_protect
+#define FRAME_GROWS_DOWNWARD (flag_stack_protect != 0                  \
+                             || (flag_sanitize & SANITIZE_ADDRESS) != 0)
 
 /* Size of the area allocated in the frame to save the GP.  */