Message ID | 1354822845.4743.37.camel@otta |
---|---|
State | New |
Headers | show |
On Thu, Dec 6, 2012 at 2:40 PM, Peter Bergner <bergner@vnet.ibm.com> wrote: > Ok, how about the following which bootstrapped and regtested fine? > > Peter > > > libsanitizer/ > * configure.tgt: Enable build on powerpc*-linux. > > gcc/ > * config/rs6000/sysv4.h (TARGET_ASAN_SHADOW_OFFSET): Define. > * config/rs6000/rs6000.c (rs6000_asan_shadow_offset): New function. > * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Define to > flag_stack_protect != 0 || flag_asan != 0. Please change the FRAME_GROWS_DOWNWARD ChangeLog entry to something more descriptive, not simply copying the macro line itself. Maybe: "Also disable if ASAN used." Okay with that change. Thanks, David
On Thu, 2012-12-06 at 15:29 -0500, David Edelsohn wrote: > On Thu, Dec 6, 2012 at 2:40 PM, Peter Bergner <bergner@vnet.ibm.com> wrote: > > * config/rs6000/sysv4.h (TARGET_ASAN_SHADOW_OFFSET): Define. > > * config/rs6000/rs6000.c (rs6000_asan_shadow_offset): New function. > > * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Define to > > flag_stack_protect != 0 || flag_asan != 0. > > Please change the FRAME_GROWS_DOWNWARD ChangeLog entry to something > more descriptive, not simply copying the macro line itself. Maybe: > "Also disable if ASAN used." Done. Committed as revision 194273. Thanks. Peter
Index: libsanitizer/configure.tgt =================================================================== --- libsanitizer/configure.tgt (revision 194226) +++ libsanitizer/configure.tgt (working copy) @@ -25,6 +25,8 @@ case "${target}" in TSAN_SUPPORTED=yes fi ;; + powerpc*-*-linux*) + ;; sparc*-*-linux*) ;; x86_64-*-darwin* | i?86-*-darwin*) Index: gcc/config/rs6000/sysv4.h =================================================================== --- gcc/config/rs6000/sysv4.h (revision 194226) +++ gcc/config/rs6000/sysv4.h (working copy) @@ -971,6 +971,9 @@ ncrtn.o%s" #define TARGET_ASM_FILE_END rs6000_elf_file_end +#undef TARGET_ASAN_SHADOW_OFFSET +#define TARGET_ASAN_SHADOW_OFFSET rs6000_asan_shadow_offset + /* This target uses the sysv4.opt file. */ #define TARGET_USES_SYSV4_OPT 1 Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 194226) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -27521,6 +27521,15 @@ rs6000_final_prescan_insn (rtx insn, rtx } } +/* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */ + +#if TARGET_ELF +static unsigned HOST_WIDE_INT +rs6000_asan_shadow_offset (void) +{ + return (unsigned HOST_WIDE_INT) 1 << (TARGET_64BIT ? 41 : 29); +} +#endif /* Mask options that we want to support inside of attribute((target)) and #pragma GCC target operations. Note, we do not include things like Index: gcc/config/rs6000/rs6000.h =================================================================== --- gcc/config/rs6000/rs6000.h (revision 194226) +++ gcc/config/rs6000/rs6000.h (working copy) @@ -1406,7 +1406,7 @@ extern enum reg_class rs6000_constraints On the RS/6000, we grow upwards, from the area after the outgoing arguments. */ -#define FRAME_GROWS_DOWNWARD (flag_stack_protect != 0) +#define FRAME_GROWS_DOWNWARD (flag_stack_protect != 0 || flag_asan != 0) /* Size of the outgoing register save area */ #define RS6000_REG_SAVE ((DEFAULT_ABI == ABI_AIX \