diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2018-06-29 00:38:26 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2018-06-29 00:38:26 +0000 |
commit | edb018532fec4577c481cf7d4fbea1f21bd137e5 (patch) | |
tree | 8aa8aefc0cdbe55bd870ca4263e270a169faae03 /test | |
parent | 10edf2e95ebca01a2c8442ee29e5f2d942f382d0 (diff) |
[cfi] Reset i-cache after copying code in test.
Fixes intermittent crashes on Android.
Also add PROT_READ to the code mapping for no real reason.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@335943 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/cfi/cross-dso/icall/dlopen.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/test/cfi/cross-dso/icall/dlopen.cpp b/test/cfi/cross-dso/icall/dlopen.cpp index d238a7ace..20fe1223a 100644 --- a/test/cfi/cross-dso/icall/dlopen.cpp +++ b/test/cfi/cross-dso/icall/dlopen.cpp @@ -83,10 +83,12 @@ static void save_code(char *p) { } static void restore_code() { - char *code = (char *)mmap(real_start, kCodeSize, PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, 0, 0); + char *code = + (char *)mmap(real_start, kCodeSize, PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, 0, 0); assert(code == real_start); memcpy(code, saved_code, kCodeSize); + __clear_cache(code, code + kCodeSize); } int main(int argc, char *argv[]) { |