diff options
| -rw-r--r-- | compiler-rt/test/tsan/java_race_pc.cc | 4 | ||||
| -rw-r--r-- | compiler-rt/test/tsan/test.h | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/compiler-rt/test/tsan/java_race_pc.cc b/compiler-rt/test/tsan/java_race_pc.cc index 0745ade6c47..53dc8976a78 100644 --- a/compiler-rt/test/tsan/java_race_pc.cc +++ b/compiler-rt/test/tsan/java_race_pc.cc @@ -13,7 +13,7 @@ void barbaz() { void *Thread(void *p) { barrier_wait(&barrier); - __tsan_read1_pc((jptr)p, (jptr)foobar + 1); + __tsan_read1_pc((jptr)p, (jptr)foobar + kPCInc); return 0; } @@ -26,7 +26,7 @@ int main() { __tsan_java_alloc(jheap, kBlockSize); pthread_t th; pthread_create(&th, 0, Thread, (void*)jheap); - __tsan_write1_pc((jptr)jheap, (jptr)barbaz + 1); + __tsan_write1_pc((jptr)jheap, (jptr)barbaz + kPCInc); barrier_wait(&barrier); pthread_join(th, 0); __tsan_java_free(jheap, kBlockSize); diff --git a/compiler-rt/test/tsan/test.h b/compiler-rt/test/tsan/test.h index a681daa3290..c9e90fab752 100644 --- a/compiler-rt/test/tsan/test.h +++ b/compiler-rt/test/tsan/test.h @@ -67,3 +67,13 @@ unsigned long long monotonic_clock_ns() { return (unsigned long long)t.tv_sec * 1000000000ull + t.tv_nsec; } #endif + +//The const kPCInc must be in sync with StackTrace::GetPreviousInstructionPc +#if defined(__powerpc64__) +// PCs are always 4 byte aligned. +const int kPCInc = 4; +#elif defined(__sparc__) || defined(__mips__) +const int kPCInc = 8; +#else +const int kPCInc = 1; +#endif |

