Hi Joshua, Jim: > > +/* Implement TARGET_ASAN_SHADOW_OFFSET. */ > > + > > +static unsigned HOST_WIDE_INT > > +riscv_asan_shadow_offset (void) > > +{ > > + return HOST_WIDE_INT_UC (0x10000000); > > +} > > Is there a reason why you used 0x10000000? > > Looking at other targets, it appears the convention is 1<<29 for > 32-bit targets, and a number larger than 1<<32 for 64-bit targets. I > think the RISC-V Linux port has a minimum of 39-bit virtual addresses > (SV39) suggesting that this should be 1<<36 for 64-bit targets. I can > test the 32-bit support on qemu, and the 64-bit support on hardware, > but my hardware is doing other stuff today. I should be able to try > testing this tomorrow. > > Otherwise the gcc stuff is pretty simple and looks OK. We just need > to double check these numbers.
Default offset is 1ULL << 44 for 64 bit target and 1ULL << 29 for 32 bit target in LLVM[1, 2], I am not talking about we should use those values, just remind that we should sync this offset value to LLVM :) [1] https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp#L96 [2] https://github.com/llvm/llvm-project/blob/master/compiler-rt/lib/asan/asan_mapping.h#L159