[compiler-rt] Build custom libc++abi without exceptions.
Summary: Since neither compiler-rt nor the libc++ we build use exceptions, we don't need libc++abi to have them either. This resolves an issue where libFuzzer's private libc++ contains implementations for __cxa_throw and friends, causing fuzz targets built with their own C++ library to segfault during exception unwinding. See https://github.com/google/oss-fuzz/issues/2328. Reviewers: phosek, EricWF, kcc Reviewed By: phosek Subscribers: kcc, dberris, mgorny, christof, llvm-commits, metzman Tags: #llvm Differential Revision: https://reviews.llvm.org/D61053 llvm-svn: 359218
This commit is contained in:
parent
538bbe5814
commit
42ef2c6d06
|
@ -4,6 +4,7 @@ project(custom-libcxx C CXX)
|
|||
# Build static libcxxabi.
|
||||
set(LIBCXXABI_STANDALONE_BUILD 1)
|
||||
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE STRING "")
|
||||
set(LIBCXXABI_LIBCXX_PATH ${COMPILER_RT_LIBCXX_PATH} CACHE PATH "")
|
||||
set(LIBCXXABI_INCLUDE_TESTS OFF CACHE BOOL "")
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
# Ensures that the libFuzzer library does not export exceptions.
|
||||
|
||||
RUN: %cpp_compiler %S/SimpleTest.cpp -o %t
|
||||
RUN: nm %t 2>&1 | FileCheck %s
|
||||
|
||||
CHECK-NOT: t __cxa_allocate_dependent_exception
|
||||
CHECK-NOT: t __cxa_allocate_exception
|
||||
CHECK-NOT: t __cxa_begin_catch
|
||||
CHECK-NOT: t __cxa_call_unexpected
|
||||
CHECK-NOT: t __cxa_current_exception_type
|
||||
CHECK-NOT: t __cxa_end_catch
|
||||
CHECK-NOT: t __cxa_free_dependent_exception
|
||||
CHECK-NOT: t __cxa_free_exception
|
||||
CHECK-NOT: t __cxa_get_exception_ptr
|
||||
CHECK-NOT: t __cxa_throw
|
Loading…
Reference in New Issue