Detect TSAN instead of relying on #ifdef THREAD_SANITIZER.
And reindent. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2293063002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN-Trybot Review-Url: https://codereview.chromium.org/2293063002
This commit is contained in:
parent
fce1906472
commit
e6ec16356e
@ -464,9 +464,6 @@
|
|||||||
],
|
],
|
||||||
'ldflags': [ '-fsanitize=<(skia_sanitizer)' ],
|
'ldflags': [ '-fsanitize=<(skia_sanitizer)' ],
|
||||||
'conditions' : [
|
'conditions' : [
|
||||||
[ 'skia_sanitizer == "thread"', {
|
|
||||||
'defines': [ 'THREAD_SANITIZER' ],
|
|
||||||
}],
|
|
||||||
[ 'skia_sanitizer == "memory"', {
|
[ 'skia_sanitizer == "memory"', {
|
||||||
'cflags': [
|
'cflags': [
|
||||||
'-O1',
|
'-O1',
|
||||||
|
@ -11,58 +11,62 @@
|
|||||||
#include "SkTypes.h"
|
#include "SkTypes.h"
|
||||||
#include "SkSemaphore.h"
|
#include "SkSemaphore.h"
|
||||||
|
|
||||||
#if defined(THREAD_SANITIZER)
|
#if !defined(__has_feature)
|
||||||
|
#define __has_feature(x) 0
|
||||||
/* Report that a lock has been created at address "lock". */
|
|
||||||
#define ANNOTATE_RWLOCK_CREATE(lock) \
|
|
||||||
AnnotateRWLockCreate(__FILE__, __LINE__, lock)
|
|
||||||
|
|
||||||
/* Report that the lock at address "lock" is about to be destroyed. */
|
|
||||||
#define ANNOTATE_RWLOCK_DESTROY(lock) \
|
|
||||||
AnnotateRWLockDestroy(__FILE__, __LINE__, lock)
|
|
||||||
|
|
||||||
/* Report that the lock at address "lock" has been acquired.
|
|
||||||
is_w=1 for writer lock, is_w=0 for reader lock. */
|
|
||||||
#define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) \
|
|
||||||
AnnotateRWLockAcquired(__FILE__, __LINE__, lock, is_w)
|
|
||||||
|
|
||||||
/* Report that the lock at address "lock" is about to be released. */
|
|
||||||
#define ANNOTATE_RWLOCK_RELEASED(lock, is_w) \
|
|
||||||
AnnotateRWLockReleased(__FILE__, __LINE__, lock, is_w)
|
|
||||||
|
|
||||||
#ifdef DYNAMIC_ANNOTATIONS_WANT_ATTRIBUTE_WEAK
|
|
||||||
# ifdef __GNUC__
|
|
||||||
# define DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK __attribute__((weak))
|
|
||||||
# else
|
|
||||||
/* TODO(glider): for Windows support we may want to change this macro in order
|
|
||||||
to prepend __declspec(selectany) to the annotations' declarations. */
|
|
||||||
# error weak annotations are not supported for your compiler
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern "C" {
|
#if __has_feature(thread_sanitizer)
|
||||||
void AnnotateRWLockCreate(
|
|
||||||
const char *file, int line,
|
/* Report that a lock has been created at address "lock". */
|
||||||
const volatile void *lock) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
#define ANNOTATE_RWLOCK_CREATE(lock) \
|
||||||
void AnnotateRWLockDestroy(
|
AnnotateRWLockCreate(__FILE__, __LINE__, lock)
|
||||||
const char *file, int line,
|
|
||||||
const volatile void *lock) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
/* Report that the lock at address "lock" is about to be destroyed. */
|
||||||
void AnnotateRWLockAcquired(
|
#define ANNOTATE_RWLOCK_DESTROY(lock) \
|
||||||
const char *file, int line,
|
AnnotateRWLockDestroy(__FILE__, __LINE__, lock)
|
||||||
const volatile void *lock, long is_w) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
|
||||||
void AnnotateRWLockReleased(
|
/* Report that the lock at address "lock" has been acquired.
|
||||||
const char *file, int line,
|
is_w=1 for writer lock, is_w=0 for reader lock. */
|
||||||
const volatile void *lock, long is_w) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
#define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) \
|
||||||
}
|
AnnotateRWLockAcquired(__FILE__, __LINE__, lock, is_w)
|
||||||
|
|
||||||
|
/* Report that the lock at address "lock" is about to be released. */
|
||||||
|
#define ANNOTATE_RWLOCK_RELEASED(lock, is_w) \
|
||||||
|
AnnotateRWLockReleased(__FILE__, __LINE__, lock, is_w)
|
||||||
|
|
||||||
|
#if defined(DYNAMIC_ANNOTATIONS_WANT_ATTRIBUTE_WEAK)
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK __attribute__((weak))
|
||||||
|
#else
|
||||||
|
/* TODO(glider): for Windows support we may want to change this macro in order
|
||||||
|
to prepend __declspec(selectany) to the annotations' declarations. */
|
||||||
|
#error weak annotations are not supported for your compiler
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
void AnnotateRWLockCreate(
|
||||||
|
const char *file, int line,
|
||||||
|
const volatile void *lock) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
||||||
|
void AnnotateRWLockDestroy(
|
||||||
|
const char *file, int line,
|
||||||
|
const volatile void *lock) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
||||||
|
void AnnotateRWLockAcquired(
|
||||||
|
const char *file, int line,
|
||||||
|
const volatile void *lock, long is_w) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
||||||
|
void AnnotateRWLockReleased(
|
||||||
|
const char *file, int line,
|
||||||
|
const volatile void *lock, long is_w) DYNAMIC_ANNOTATIONS_ATTRIBUTE_WEAK;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define ANNOTATE_RWLOCK_CREATE(lock)
|
#define ANNOTATE_RWLOCK_CREATE(lock)
|
||||||
#define ANNOTATE_RWLOCK_DESTROY(lock)
|
#define ANNOTATE_RWLOCK_DESTROY(lock)
|
||||||
#define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w)
|
#define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w)
|
||||||
#define ANNOTATE_RWLOCK_RELEASED(lock, is_w)
|
#define ANNOTATE_RWLOCK_RELEASED(lock, is_w)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user