diff options
Diffstat (limited to 'lib/sanitizer_common/symbolizer/scripts')
-rwxr-xr-x | lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh | 34 | ||||
-rw-r--r-- | lib/sanitizer_common/symbolizer/scripts/global_symbols.txt | 7 |
2 files changed, 32 insertions, 9 deletions
diff --git a/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh b/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh index 0c3917c6b17b1..be79f1df64ba3 100755 --- a/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh +++ b/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh @@ -25,15 +25,25 @@ # object file with only our entry points exposed. However, this does not work at # present, see PR30750. -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +set -x +set -e +set -u + +SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) SRC_DIR=$(readlink -f $SCRIPT_DIR/..) TARGE_DIR=$(readlink -f $1) - -LLVM_SRC="${LLVM_SRC:-$SCRIPT_DIR/../../../../../..}" +COMPILER_RT_SRC=$(readlink -f ${SCRIPT_DIR}/../../../..) +LLVM_SRC=${LLVM_SRC:-${COMPILER_RT_SRC}/../llvm} LLVM_SRC=$(readlink -f $LLVM_SRC) +if [[ ! -d "${LLVM_SRC}/../llvm" ]] ; then + LLVM_SRC=$(readlink -f ${COMPILER_RT_SRC}/../../../llvm) +fi +LIBCXX_SRC=$(readlink -f ${COMPILER_RT_SRC}/../libcxx) +LIBCXXABI_SRC=$(readlink -f ${COMPILER_RT_SRC}/../libcxxabi) -if [[ ! -d "${LLVM_SRC}/projects/libcxxabi" || - ! -d "${LLVM_SRC}/projects/libcxx" ]]; then +if [[ ! -d "${LLVM_SRC}/../llvm" || + ! -d "${LIBCXX_SRC}" || + ! -d "${LIBCXXABI_SRC}" ]]; then echo "Missing or incomplete LLVM_SRC" exit 1 fi @@ -88,8 +98,13 @@ make -j${J} libz.a if [[ ! -d ${LIBCXX_BUILD} ]]; then mkdir -p ${LIBCXX_BUILD} cd ${LIBCXX_BUILD} - LIBCXX_FLAGS="${FLAGS} -Wno-macro-redefined -I${LLVM_SRC}/projects/libcxxabi/include" + LIBCXX_FLAGS="${FLAGS} -Wno-macro-redefined -I${LIBCXX_SRC}/include" + PROJECTS= + if [[ ! -d $LLVM_SRC/projects/libcxxabi ]] ; then + PROJECTS="-DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi'" + fi cmake -GNinja \ + ${PROJECTS} \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_CXX_COMPILER=$CXX \ @@ -127,7 +142,7 @@ if [[ ! -d ${LLVM_BUILD} ]]; then $LLVM_SRC fi cd ${LLVM_BUILD} -ninja LLVMSymbolize LLVMObject LLVMBinaryFormat LLVMDebugInfoDWARF LLVMSupport LLVMDebugInfoPDB LLVMMC LLVMDemangle +ninja LLVMSymbolize LLVMObject LLVMBinaryFormat LLVMDebugInfoDWARF LLVMSupport LLVMDebugInfoPDB LLVMMC LLVMDemangle LLVMTextAPI cd ${BUILD_DIR} rm -rf ${SYMBOLIZER_BUILD} @@ -135,8 +150,8 @@ mkdir ${SYMBOLIZER_BUILD} cd ${SYMBOLIZER_BUILD} echo "Compiling..." -SYMBOLIZER_FLAGS="$LLVM_FLAGS -I${LLVM_SRC}/include -I${LLVM_BUILD}/include -std=c++11" -$CXX $SYMBOLIZER_FLAGS ${SRC_DIR}/sanitizer_symbolize.cc ${SRC_DIR}/sanitizer_wrappers.cc -c +SYMBOLIZER_FLAGS="$LLVM_FLAGS -I${LLVM_SRC}/include -I${LLVM_BUILD}/include -std=c++14" +$CXX $SYMBOLIZER_FLAGS ${SRC_DIR}/sanitizer_symbolize.cpp ${SRC_DIR}/sanitizer_wrappers.cpp -c $AR rc symbolizer.a sanitizer_symbolize.o sanitizer_wrappers.o SYMBOLIZER_API_LIST=__sanitizer_symbolize_code,__sanitizer_symbolize_data,__sanitizer_symbolize_flush,__sanitizer_symbolize_demangle @@ -152,6 +167,7 @@ $SCRIPT_DIR/ar_to_bc.sh $LIBCXX_BUILD/lib/libc++.a \ $LLVM_BUILD/lib/libLLVMDebugInfoPDB.a \ $LLVM_BUILD/lib/libLLVMDemangle.a \ $LLVM_BUILD/lib/libLLVMMC.a \ + $LLVM_BUILD/lib/libLLVMTextAPI.a \ $ZLIB_BUILD/libz.a \ symbolizer.a \ all.bc diff --git a/lib/sanitizer_common/symbolizer/scripts/global_symbols.txt b/lib/sanitizer_common/symbolizer/scripts/global_symbols.txt index 2a0f76b80ef4c..fa42e2a019651 100644 --- a/lib/sanitizer_common/symbolizer/scripts/global_symbols.txt +++ b/lib/sanitizer_common/symbolizer/scripts/global_symbols.txt @@ -19,8 +19,13 @@ __interceptor_pthread_cond_broadcast w __interceptor_pthread_cond_wait w __interceptor_pthread_getspecific w __interceptor_pthread_key_create w +__interceptor_pthread_mutex_destroy w +__interceptor_pthread_mutex_init w __interceptor_pthread_mutex_lock w __interceptor_pthread_mutex_unlock w +__interceptor_pthread_mutexattr_destroy w +__interceptor_pthread_mutexattr_init w +__interceptor_pthread_mutexattr_settype w __interceptor_pthread_once w __interceptor_pthread_setspecific w __interceptor_read w @@ -70,9 +75,11 @@ getpid U getrlimit U gettimeofday U ioctl U +isalnum U isalpha U isatty U islower U +isspace U isprint U isupper U isxdigit U |