> On Sep 9, 2014, at 2:50 AM, Marcus Shawcroft <marcus.shawcr...@gmail.com> > wrote: > > +static unsigned HOST_WIDE_INT > +aarch64_asan_shadow_offset (void) > +{ > + return (HOST_WIDE_INT_1 << 36); > +} > + > > Looking around various other ports I see magic numbers including 29, > 41, 44.... Help me understand why 36 is the right choice for aarch64?
Also why 36? What is the min virtual address space aarch64 Linux kernel supports with 4k pages and 3 level page table? Also does this need to conditionalized on lp64? Since I am about to post glibc patches turning on address sanitizer breaks that. Thanks, Andrew > > Cheers > /Marcus > > >> On 5 September 2014 15:49, Christophe Lyon <christophe.l...@linaro.org> >> wrote: >> Hi, >> >> The attached patch enables the address and undefined behavior sanitizers. >> >> I have tested it on AArch64 hardware, and asan.exp tests pass, but a >> few ubsan.exp tests fail as follows: >> FAIL: c-c++-common/ubsan/float-cast-overflow-1.c -O3 -g execution test >> FAIL: c-c++-common/ubsan/float-cast-overflow-1.c -O2 -flto >> -flto-partition=none execution test >> FAIL: c-c++-common/ubsan/float-cast-overflow-2.c -O3 -g execution test >> FAIL: c-c++-common/ubsan/float-cast-overflow-3.c -O3 -g execution test >> FAIL: c-c++-common/ubsan/float-cast-overflow-4.c -O2 execution test >> FAIL: c-c++-common/ubsan/float-cast-overflow-4.c -O3 -g execution test >> FAIL: c-c++-common/ubsan/overflow-int128.c -O0 (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O0 (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O1 (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O1 (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O3 -fomit-frame-pointer >> (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O3 -fomit-frame-pointer >> (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O3 -g (internal compiler >> error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O3 -g (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -Os (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -Os (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 -flto >> -flto-partition=none (internal compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 -flto >> -flto-partition=none (test for excess errors) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 -flto (internal >> compiler error) >> FAIL: c-c++-common/ubsan/overflow-int128.c -O2 -flto (test for excess >> errors) >> FAIL: gcc.dg/ubsan/float-cast-overflow-bf.c -O3 -g execution test >> >> I think all these failures need to be addressed separately, and should >> not prevent from adding the functionality since most of them pass. >> >> Note that an update of libsanitizer is required, to include at least >> revision 209641 (which fixes internal_fork for AArch64). >> >> OK for trunk? >> >> Christophe. >> >> 2014-09-05 Christophe Lyon <christophe.l...@linaro.org> >> gcc/ >> * config/aarch64/aarch64-linux.h (ASAN_CC1_SPEC): Define. >> (CC1_SPEC): Define. >> * config/aarch64/aarch64.c (aarch64_asan_shadow_offset): New function. >> (TARGET_ASAN_SHADOW_OFFSET): Define. >> >> libsanitizer/ >> * configure.tgt: Add AArch64 pattern.