Compare commits

..

3 Commits

Author SHA1 Message Date
Bartek Kryza
3b10885155 Added Makefile option to build with address sanitizer 2024-07-12 16:58:13 +02:00
Bartek Kryza
c0f5d5f64a Added CLANG_UML_ENABLE_BACKTRACE CMake option to enable backtrace in release builds (#292) 2024-06-21 23:52:33 +02:00
Bartek Kryza
2c23627154 Merge pull request #291 from bkryza/v0.5.3
V0.5.3
2024-06-19 21:58:11 +02:00
3 changed files with 40 additions and 4 deletions

1
.sanitize-blacklist Normal file
View File

@@ -0,0 +1 @@
fun:*SmallVector*

View File

@@ -70,6 +70,23 @@ if(CODE_COVERAGE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov --coverage") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov --coverage")
endif(CODE_COVERAGE) endif(CODE_COVERAGE)
#
# Setup Address Sanitizer
#
option(ADDRESS_SANITIZER "" OFF)
if(ADDRESS_SANITIZER)
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} \
-fno-omit-frame-pointer \
-fsanitize=address \
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} \
-fno-omit-frame-pointer \
-fsanitize=address \
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
endif(ADDRESS_SANITIZER)
# #
# Setup LLVM # Setup LLVM
# #
@@ -133,14 +150,25 @@ endif()
link_directories(${LLVM_LIBRARY_DIR} ${YAML_CPP_LIBRARY_DIR}) link_directories(${LLVM_LIBRARY_DIR} ${YAML_CPP_LIBRARY_DIR})
# #
# Setup libdw and libunwind # Setup backward-cpp, libdw and libunwind
# #
if(LINUX AND (CMAKE_BUILD_TYPE MATCHES Debug)) if(CMAKE_BUILD_TYPE MATCHES Debug)
set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT ON)
else()
set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT OFF)
endif()
option(CLANG_UML_ENABLE_BACKTRACE "Enable backtrace on segfault"
${CLANG_UML_ENABLE_BACKTRACE_DEFAULT})
if(LINUX AND CLANG_UML_ENABLE_BACKTRACE)
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(DW REQUIRED IMPORTED_TARGET libdw) pkg_check_modules(DW REQUIRED IMPORTED_TARGET libdw)
pkg_check_modules(UNWIND REQUIRED IMPORTED_TARGET libunwind) pkg_check_modules(UNWIND REQUIRED IMPORTED_TARGET libunwind)
set(BACKWARD_CPP_LIBRARIES PkgConfig::DW PkgConfig::UNWIND) set(BACKWARD_CPP_LIBRARIES PkgConfig::DW PkgConfig::UNWIND)
set(ENABLE_BACKWARD_CPP -DENABLE_BACKWARD_CPP) set(ENABLE_BACKWARD_CPP -DENABLE_BACKWARD_CPP)
message(STATUS "Enabling backward-cpp")
else()
message(STATUS "Disabling backward-cpp")
endif() endif()
# #

View File

@@ -38,6 +38,7 @@ CMAKE_CXX_FLAGS ?=
CMAKE_EXE_LINKER_FLAGS ?= CMAKE_EXE_LINKER_FLAGS ?=
CMAKE_GENERATOR ?= Unix Makefiles CMAKE_GENERATOR ?= Unix Makefiles
CODE_COVERAGE ?= OFF CODE_COVERAGE ?= OFF
ADDRESS_SANITIZER ?= OFF
ENABLE_CXX_MODULES_TEST_CASES ?= OFF ENABLE_CXX_MODULES_TEST_CASES ?= OFF
ENABLE_CUDA_TEST_CASES ?= OFF ENABLE_CUDA_TEST_CASES ?= OFF
@@ -54,6 +55,7 @@ clean:
rm -rf debug release debug_tidy coverage.info coverage-src.info rm -rf debug release debug_tidy coverage.info coverage-src.info
debug/CMakeLists.txt: debug/CMakeLists.txt:
$(eval CLANG_UML_ENABLE_BACKTRACE ?= ON)
cmake -S . -B debug \ cmake -S . -B debug \
-G"$(CMAKE_GENERATOR)" \ -G"$(CMAKE_GENERATOR)" \
-DGIT_VERSION=$(GIT_VERSION) \ -DGIT_VERSION=$(GIT_VERSION) \
@@ -67,9 +69,12 @@ debug/CMakeLists.txt:
-DCMAKE_PREFIX=${CMAKE_PREFIX} \ -DCMAKE_PREFIX=${CMAKE_PREFIX} \
-DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \ -DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \
-DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \ -DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \
-DCODE_COVERAGE=$(CODE_COVERAGE) -DCODE_COVERAGE=$(CODE_COVERAGE) \
-DADDRESS_SANITIZER=$(ADDRESS_SANITIZER) \
-DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE)
release/CMakeLists.txt: release/CMakeLists.txt:
$(eval CLANG_UML_ENABLE_BACKTRACE ?= OFF)
cmake -S . -B release \ cmake -S . -B release \
-G"$(CMAKE_GENERATOR)" \ -G"$(CMAKE_GENERATOR)" \
-DGIT_VERSION=$(GIT_VERSION) \ -DGIT_VERSION=$(GIT_VERSION) \
@@ -81,8 +86,10 @@ release/CMakeLists.txt:
-DLLVM_CONFIG_PATH=${LLVM_CONFIG_PATH} \ -DLLVM_CONFIG_PATH=${LLVM_CONFIG_PATH} \
-DLINK_LLVM_SHARED=${LLVM_SHARED} \ -DLINK_LLVM_SHARED=${LLVM_SHARED} \
-DCMAKE_PREFIX=${CMAKE_PREFIX} \ -DCMAKE_PREFIX=${CMAKE_PREFIX} \
-DADDRESS_SANITIZER=$(ADDRESS_SANITIZER) \
-DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \ -DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \
-DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) -DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \
-DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE)
debug_tidy/CMakeLists.txt: debug_tidy/CMakeLists.txt:
cmake -S . -B debug_tidy \ cmake -S . -B debug_tidy \