17e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov// Test blacklist functionality for TSan. 27e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 35d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: echo "fun:*Blacklisted_Thread2*" > %t.blacklist 45d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%t.blacklist -o %t && %run %t 2>&1 | FileCheck %s 57e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov#include <pthread.h> 67e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov#include <stdio.h> 77e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 87e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonovint Global; 97e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 107e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonovvoid *Thread1(void *x) { 117e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov Global++; 127e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov return NULL; 137e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov} 147e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 1589efdc5f601988a96413585da55dfd9ffc396509Alexey Samsonovvoid *Blacklisted_Thread2(void *x) { 167e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov Global--; 177e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov return NULL; 187e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov} 197e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 207e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonovint main() { 217e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov pthread_t t[2]; 227e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov pthread_create(&t[0], NULL, Thread1, NULL); 2389efdc5f601988a96413585da55dfd9ffc396509Alexey Samsonov pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL); 247e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov pthread_join(t[0], NULL); 257e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov pthread_join(t[1], NULL); 267e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov printf("PASS\n"); 277e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov return 0; 287e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov} 297e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov 307e3d21fac4e6407b04f9948309f86adc609720abAlexey Samsonov// CHECK-NOT: ThreadSanitizer: data race 31