aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDimitrije Milosevic <Dimitrije.Milosevic@Syrmia.com>2022-07-07 01:58:20 +0800
committerXi Ruoyao <xry111@xry111.site>2022-07-07 10:20:03 +0800
commit7922f5ee649a88cd7c0b6d1a242588013d96223d (patch)
tree4706791ae3dcab174fe911e3b9ec9d20786d5620 /gcc
parentee915c72da2caf92697dbedf0d9d9730ce9aca7a (diff)
downloadgcc-7922f5ee649a88cd7c0b6d1a242588013d96223d.zip
gcc-7922f5ee649a88cd7c0b6d1a242588013d96223d.tar.gz
gcc-7922f5ee649a88cd7c0b6d1a242588013d96223d.tar.bz2
Mips: Fix the ASAN shadow offset hook for the n32 ABI
gcc/ChangeLog: * config/mips/mips.cc (mips_asan_shadow_offset): Reformat to handle the N32 ABI. * config/mips/mips.h (SUBTARGET_SHADOW_OFFSET): Remove the macro, as it is not needed anymore.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/mips/mips.cc7
-rw-r--r--gcc/config/mips/mips.h7
2 files changed, 6 insertions, 8 deletions
diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc
index 5eb8459..e81a245 100644
--- a/gcc/config/mips/mips.cc
+++ b/gcc/config/mips/mips.cc
@@ -22743,7 +22743,12 @@ mips_constant_alignment (const_tree exp, HOST_WIDE_INT align)
static unsigned HOST_WIDE_INT
mips_asan_shadow_offset (void)
{
- return SUBTARGET_SHADOW_OFFSET;
+ if (mips_abi == ABI_N32)
+ return (HOST_WIDE_INT_1 << 29);
+ if (POINTER_SIZE == 64)
+ return (HOST_WIDE_INT_1 << 37);
+ else
+ return HOST_WIDE_INT_C (0x0aaa0000);
}
/* Implement TARGET_STARTING_FRAME_OFFSET. See mips_compute_frame_info
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 858bbba..0029864 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -3463,10 +3463,3 @@ struct GTY(()) machine_function {
&& !TARGET_MICROMIPS && !TARGET_FIX_24K)
#define NEED_INDICATE_EXEC_STACK 0
-
-/* Define the shadow offset for asan. Other OS's can override in the
- respective tm.h files. */
-#ifndef SUBTARGET_SHADOW_OFFSET
-#define SUBTARGET_SHADOW_OFFSET \
- (POINTER_SIZE == 64 ? HOST_WIDE_INT_1 << 37 : HOST_WIDE_INT_C (0x0aaa0000))
-#endif