Fix linking for some users who already have tsan enabled code and are trying to

link it against llvm code, by making our definitions weak. "Some users."

llvm-svn: 144596
This commit is contained in:
Nick Lewycky 2011-11-15 00:14:04 +00:00
parent ec9b50d961
commit b2489b7484
2 changed files with 13 additions and 6 deletions

View File

@ -61,12 +61,19 @@
#define LLVM_ATTRIBUTE_READONLY
#endif
#if (__GNUC__ >= 4)
#define LLVM_ATTRIBUTE_WEAK __attribute__((__weak__))
#else
#define LLVM_ATTRIBUTE_WEAK
#endif
#if (__GNUC__ >= 4)
#define BUILTIN_EXPECT(EXPR, VALUE) __builtin_expect((EXPR), (VALUE))
#else
#define BUILTIN_EXPECT(EXPR, VALUE) (EXPR)
#endif
// C++ doesn't support 'extern template' of template specializations. GCC does,
// but requires __extension__ before it. In the header, use this:
// EXTERN_TEMPLATE_INSTANTIATION(class foo<bar>);

View File

@ -56,10 +56,10 @@ void llvm::sys::ValgrindDiscardTranslations(const void *Addr, size_t Len) {
// These functions require no implementation, tsan just looks at the arguments
// they're called with.
extern "C" {
void AnnotateHappensBefore(const char *file, int line,
LLVM_ATTRIBUTE_WEAK void AnnotateHappensBefore(const char *file, int line,
const volatile void *cv) {}
void AnnotateHappensAfter(const char *file, int line,
LLVM_ATTRIBUTE_WEAK void AnnotateHappensAfter(const char *file, int line,
const volatile void *cv) {}
void AnnotateIgnoreWritesBegin(const char *file, int line) {}
void AnnotateIgnoreWritesEnd(const char *file, int line) {}
LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesBegin(const char *file, int line){}
LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesEnd(const char *file, int line) {}
}