On 9 September 2014 13:08, Christophe Lyon <christophe.l...@linaro.org> wrote:
> On 9 September 2014 12:03,  <pins...@gmail.com> wrote:
>>
>>
>>> 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.
>>
>
> The address space is 2^39 according to /proc/self/maps:
> [...]
>
> The shadow offset is obtained by dividing this value by 8 -> 2^36.
>
> Note that this value has to match kAArch64_ShadowOffset64 as defined
> in libsanitizer/asan/asan_mapping.h.
>
> I do expect a followup patch to support ilp32, but I wouldn't post a
> patch which I haven't tested.

Presumably for ILP32 the shadow offset should be 1<<29 and we will
need to make both asan_mapping.h and aarch64_asan_shadow_offset
conditional.

This patch for LP64 is OK.

Thanks
/Marcus

Reply via email to