diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-11-10 22:27:48 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-11-10 22:27:48 +0000 |
| commit | 989299c42b00d2cfedd1c65f663b51ee45d84f69 (patch) | |
| tree | a62ab30ce0c82302d55b360b375f9eee99928ec8 /compiler-rt/lib/asan/asan_mapping.h | |
| parent | ba664c1d047a7ec1ac86adaf178bf829cdfd5961 (diff) | |
| download | bcm5719-llvm-989299c42b00d2cfedd1c65f663b51ee45d84f69.tar.gz bcm5719-llvm-989299c42b00d2cfedd1c65f663b51ee45d84f69.zip | |
[asan] Use dynamic shadow on 32-bit Android.
Summary:
The following kernel change has moved ET_DYN base to 0x4000000 on arm32:
https://marc.info/?l=linux-kernel&m=149825162606848&w=2
Switch to dynamic shadow base to avoid such conflicts in the future.
Reserve shadow memory in an ifunc resolver, but don't use it in the instrumentation
until PR35221 is fixed. This will eventually let use save one load per function.
Reviewers: kcc
Subscribers: aemerson, srhines, kubamracek, kristof.beyls, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D39393
llvm-svn: 317943
Diffstat (limited to 'compiler-rt/lib/asan/asan_mapping.h')
| -rw-r--r-- | compiler-rt/lib/asan/asan_mapping.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler-rt/lib/asan/asan_mapping.h b/compiler-rt/lib/asan/asan_mapping.h index fcd95114e1c..febe090e2ea 100644 --- a/compiler-rt/lib/asan/asan_mapping.h +++ b/compiler-rt/lib/asan/asan_mapping.h @@ -156,7 +156,7 @@ static const u64 kWindowsShadowOffset32 = 3ULL << 28; // 0x30000000 # define SHADOW_OFFSET (0) #elif SANITIZER_WORDSIZE == 32 # if SANITIZER_ANDROID -# define SHADOW_OFFSET (0) +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # elif defined(__mips__) # define SHADOW_OFFSET kMIPS32_ShadowOffset32 # elif SANITIZER_FREEBSD @@ -200,6 +200,12 @@ static const u64 kWindowsShadowOffset32 = 3ULL << 28; // 0x30000000 # endif #endif +#if SANITIZER_ANDROID && defined(__arm__) +# define ASAN_PREMAP_SHADOW 1 +#else +# define ASAN_PREMAP_SHADOW 0 +#endif + #define SHADOW_GRANULARITY (1ULL << SHADOW_SCALE) #define MEM_TO_SHADOW(mem) (((mem) >> SHADOW_SCALE) + (SHADOW_OFFSET)) |

