From 673b12e76ff7a6941be35cf41dcb04a015acf51f Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 28 Dec 2020 16:25:45 -0800 Subject: [PATCH] [tsan] Remove stdlib.h from dd_interceptors.cpp This fixes "realpath already defined" error. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D93877 --- compiler-rt/lib/tsan/dd/dd_interceptors.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler-rt/lib/tsan/dd/dd_interceptors.cpp b/compiler-rt/lib/tsan/dd/dd_interceptors.cpp index 35a0beb..f78ef2d 100644 --- a/compiler-rt/lib/tsan/dd/dd_interceptors.cpp +++ b/compiler-rt/lib/tsan/dd/dd_interceptors.cpp @@ -6,11 +6,12 @@ // //===----------------------------------------------------------------------===// +#include + #include "dd_rtl.h" #include "interception/interception.h" +#include "sanitizer_common/sanitizer_allocator_internal.h" #include "sanitizer_common/sanitizer_procmaps.h" -#include -#include using namespace __dsan; @@ -163,12 +164,12 @@ static pthread_cond_t *init_cond(pthread_cond_t *c, bool force = false) { uptr cond = atomic_load(p, memory_order_acquire); if (!force && cond != 0) return (pthread_cond_t*)cond; - void *newcond = malloc(sizeof(pthread_cond_t)); + void *newcond = InternalAlloc(sizeof(pthread_cond_t)); internal_memset(newcond, 0, sizeof(pthread_cond_t)); if (atomic_compare_exchange_strong(p, &cond, (uptr)newcond, memory_order_acq_rel)) return (pthread_cond_t*)newcond; - free(newcond); + InternalFree(newcond); return (pthread_cond_t*)cond; } @@ -216,7 +217,7 @@ INTERCEPTOR(int, pthread_cond_destroy, pthread_cond_t *c) { InitThread(); pthread_cond_t *cond = init_cond(c); int res = REAL(pthread_cond_destroy)(cond); - free(cond); + InternalFree(cond); atomic_store((atomic_uintptr_t*)c, 0, memory_order_relaxed); return res; } -- 2.7.4