Jonas Hahnfeld | 50fed04 | 2016-11-07 15:58:36 +0000 | [diff] [blame] | 1 | /* |
Jonathan Peyton | de4749b | 2016-12-14 23:01:24 +0000 | [diff] [blame] | 2 | * tsan_annotations.cpp -- ThreadSanitizer annotations to support data |
Jonas Hahnfeld | 50fed04 | 2016-11-07 15:58:36 +0000 | [diff] [blame] | 3 | * race detection in OpenMP programs. |
| 4 | */ |
| 5 | |
Jonas Hahnfeld | 50fed04 | 2016-11-07 15:58:36 +0000 | [diff] [blame] | 6 | //===----------------------------------------------------------------------===// |
| 7 | // |
| 8 | // The LLVM Compiler Infrastructure |
| 9 | // |
| 10 | // This file is dual licensed under the MIT and the University of Illinois Open |
| 11 | // Source Licenses. See LICENSE.txt for details. |
| 12 | // |
| 13 | //===----------------------------------------------------------------------===// |
| 14 | |
| 15 | #include "tsan_annotations.h" |
| 16 | |
| 17 | #include <stdio.h> |
| 18 | |
| 19 | typedef unsigned long uptr; |
Jonathan Peyton | 3041982 | 2017-05-12 18:01:32 +0000 | [diff] [blame] | 20 | typedef signed long sptr; |
Jonas Hahnfeld | 50fed04 | 2016-11-07 15:58:36 +0000 | [diff] [blame] | 21 | |
Jonathan Peyton | 3041982 | 2017-05-12 18:01:32 +0000 | [diff] [blame] | 22 | extern "C" __attribute__((weak)) void AnnotateHappensBefore(const char *f, |
| 23 | int l, uptr addr) {} |
| 24 | extern "C" __attribute__((weak)) void AnnotateHappensAfter(const char *f, int l, |
| 25 | uptr addr) {} |
| 26 | extern "C" __attribute__((weak)) void AnnotateCondVarSignal(const char *f, |
| 27 | int l, uptr cv) {} |
| 28 | extern "C" __attribute__((weak)) void AnnotateCondVarSignalAll(const char *f, |
| 29 | int l, uptr cv) { |
| 30 | } |
| 31 | extern "C" __attribute__((weak)) void AnnotateMutexIsNotPHB(const char *f, |
| 32 | int l, uptr mu) {} |
| 33 | extern "C" __attribute__((weak)) void AnnotateCondVarWait(const char *f, int l, |
| 34 | uptr cv, uptr lock) {} |
| 35 | extern "C" __attribute__((weak)) void AnnotateRWLockCreate(const char *f, int l, |
| 36 | uptr m) {} |
| 37 | extern "C" __attribute__((weak)) void |
| 38 | AnnotateRWLockCreateStatic(const char *f, int l, uptr m) {} |
| 39 | extern "C" __attribute__((weak)) void AnnotateRWLockDestroy(const char *f, |
| 40 | int l, uptr m) {} |
| 41 | extern "C" __attribute__((weak)) void |
| 42 | AnnotateRWLockAcquired(const char *f, int l, uptr m, uptr is_w) {} |
| 43 | extern "C" __attribute__((weak)) void |
| 44 | AnnotateRWLockReleased(const char *f, int l, uptr m, uptr is_w) {} |
| 45 | extern "C" __attribute__((weak)) void AnnotateTraceMemory(const char *f, int l, |
| 46 | uptr mem) {} |
| 47 | extern "C" __attribute__((weak)) void AnnotateFlushState(const char *f, int l) { |
| 48 | } |
| 49 | extern "C" __attribute__((weak)) void AnnotateNewMemory(const char *f, int l, |
| 50 | uptr mem, uptr size) {} |
| 51 | extern "C" __attribute__((weak)) void AnnotateNoOp(const char *f, int l, |
| 52 | uptr mem) {} |
| 53 | extern "C" __attribute__((weak)) void AnnotateFlushExpectedRaces(const char *f, |
| 54 | int l) {} |
| 55 | extern "C" __attribute__((weak)) void |
| 56 | AnnotateEnableRaceDetection(const char *f, int l, int enable) {} |
| 57 | extern "C" __attribute__((weak)) void |
| 58 | AnnotateMutexIsUsedAsCondVar(const char *f, int l, uptr mu) {} |
| 59 | extern "C" __attribute__((weak)) void AnnotatePCQGet(const char *f, int l, |
| 60 | uptr pcq) {} |
| 61 | extern "C" __attribute__((weak)) void AnnotatePCQPut(const char *f, int l, |
| 62 | uptr pcq) {} |
| 63 | extern "C" __attribute__((weak)) void AnnotatePCQDestroy(const char *f, int l, |
| 64 | uptr pcq) {} |
| 65 | extern "C" __attribute__((weak)) void AnnotatePCQCreate(const char *f, int l, |
| 66 | uptr pcq) {} |
| 67 | extern "C" __attribute__((weak)) void AnnotateExpectRace(const char *f, int l, |
| 68 | uptr mem, char *desc) { |
| 69 | } |
| 70 | extern "C" __attribute__((weak)) void |
| 71 | AnnotateBenignRaceSized(const char *f, int l, uptr mem, uptr size, char *desc) { |
| 72 | } |
| 73 | extern "C" __attribute__((weak)) void AnnotateBenignRace(const char *f, int l, |
| 74 | uptr mem, char *desc) { |
| 75 | } |
| 76 | extern "C" __attribute__((weak)) void AnnotateIgnoreReadsBegin(const char *f, |
| 77 | int l) {} |
| 78 | extern "C" __attribute__((weak)) void AnnotateIgnoreReadsEnd(const char *f, |
| 79 | int l) {} |
| 80 | extern "C" __attribute__((weak)) void AnnotateIgnoreWritesBegin(const char *f, |
| 81 | int l) {} |
| 82 | extern "C" __attribute__((weak)) void AnnotateIgnoreWritesEnd(const char *f, |
| 83 | int l) {} |
| 84 | extern "C" __attribute__((weak)) void AnnotateIgnoreSyncBegin(const char *f, |
| 85 | int l) {} |
| 86 | extern "C" __attribute__((weak)) void AnnotateIgnoreSyncEnd(const char *f, |
| 87 | int l) {} |
| 88 | extern "C" __attribute__((weak)) void |
| 89 | AnnotatePublishMemoryRange(const char *f, int l, uptr addr, uptr size) {} |
| 90 | extern "C" __attribute__((weak)) void |
| 91 | AnnotateUnpublishMemoryRange(const char *f, int l, uptr addr, uptr size) {} |
| 92 | extern "C" __attribute__((weak)) void AnnotateThreadName(const char *f, int l, |
| 93 | char *name) {} |
| 94 | extern "C" __attribute__((weak)) void |
| 95 | WTFAnnotateHappensBefore(const char *f, int l, uptr addr) {} |
| 96 | extern "C" __attribute__((weak)) void |
| 97 | WTFAnnotateHappensAfter(const char *f, int l, uptr addr) {} |
| 98 | extern "C" __attribute__((weak)) void |
| 99 | WTFAnnotateBenignRaceSized(const char *f, int l, uptr mem, uptr sz, |
| 100 | char *desc) {} |
| 101 | extern "C" __attribute__((weak)) int RunningOnValgrind() { return 0; } |
| 102 | extern "C" __attribute__((weak)) double ValgrindSlowdown(void) { return 0; } |
| 103 | extern "C" __attribute__((weak)) const char __attribute__((weak)) * |
| 104 | ThreadSanitizerQuery(const char *query) { |
| 105 | return 0; |
| 106 | } |
| 107 | extern "C" __attribute__((weak)) void |
| 108 | AnnotateMemoryIsInitialized(const char *f, int l, uptr mem, uptr sz) {} |