[TSAN] Fix test java_race_pc

Incremented the pc for each architecture in accordance with StackTrace:GetPreviousInstructionPC

Reviewers: samsonov, dvyukov
Subscribers: llvm-commits, mohit.bhakkad, jaydeep
Differential: http://reviews.llvm.org/D17802
llvm-svn: 262483
This commit is contained in:
Sagar Thakur 2016-03-02 13:53:22 +00:00
parent 45dbfa1f83
commit 8f3381ed31
2 changed files with 12 additions and 2 deletions

View File

@ -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);

View File

@ -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