tsan: Enable 48-bit VMA support on aarch64
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 29 Jul 2016 12:45:35 +0000 (12:45 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 29 Jul 2016 12:45:35 +0000 (12:45 +0000)
commit4f9de1e7bfb85262315ef33d44cf688e07b6d0da
tree518ebebba65bad5b451c9f60c1f0aea048dd3c66
parentcbaca42a0386219cd9ae843b84eff50c533461a2
tsan: Enable 48-bit VMA support on aarch64

This patch adds 48-bits VMA support for tsan on aarch64.  As current
mappings for aarch64, 48-bit VMA also supports PIE executable.  This
limits the mapping mechanism because the PIE address bits
(usually 0aaaaXXXXXXXX) makes it harder to create a mask/xor value
to include all memory regions.  I think it is possible to create a
large application VAM range by either dropping PIE support or tune
current range.

It also changes slight the way addresses are packed in SyncVar structure:
previously it assumes x86_64 as the maximum VMA range.  Since ID is 14 bits
wide, shifting 48 bits should be ok.

Tested on x86_64, ppc64le and aarch64 (39 and 48 bits VMA).

llvm-svn: 277137
compiler-rt/lib/tsan/rtl/tsan_platform.h
compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
compiler-rt/lib/tsan/rtl/tsan_rtl.cc
compiler-rt/lib/tsan/rtl/tsan_sync.h