summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2018-06-29 00:38:26 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2018-06-29 00:38:26 +0000
commitedb018532fec4577c481cf7d4fbea1f21bd137e5 (patch)
tree8aa8aefc0cdbe55bd870ca4263e270a169faae03 /test
parent10edf2e95ebca01a2c8442ee29e5f2d942f382d0 (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.cpp6
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[]) {