//===-- test.c ------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // Sanity test for Go runtime. // //===----------------------------------------------------------------------===// #include void __tsan_init(); void __tsan_fini(); void __tsan_go_start(int pgoid, int chgoid, void *pc); void __tsan_go_end(int goid); void __tsan_read(int goid, void *addr, void *pc); void __tsan_write(int goid, void *addr, void *pc); void __tsan_func_enter(int goid, void *pc); void __tsan_func_exit(int goid); void __tsan_malloc(int goid, void *p, unsigned long sz, void *pc); void __tsan_free(void *p); void __tsan_acquire(int goid, void *addr); void __tsan_release(int goid, void *addr); void __tsan_release_merge(int goid, void *addr); int __tsan_symbolize(void *pc, char **img, char **rtn, char **file, int *l) { return 0; } char buf[10]; int main(void) { __tsan_init(); __tsan_func_enter(0, &main); __tsan_malloc(0, buf, 10, 0); __tsan_release(0, buf); __tsan_release_merge(0, buf); __tsan_go_start(0, 1, 0); __tsan_write(1, buf, 0); __tsan_acquire(1, buf); __tsan_go_end(1); __tsan_read(0, buf, 0); __tsan_free(buf); __tsan_func_exit(0); __tsan_fini(); return 0; }