Skip to content

Commit b721f2c

Browse files
Gary-Hobsonxiaoxiang781216
authored andcommitted
libcxx: Disable dynamic type checking when enabling libcxxabi
It results in a recursive call, cxxabiv1::__dynamic_case -> is_equal -> __ubsan::checkDynamic -> cxxabiv1::__dynamic_case Signed-off-by: yinshengkai <[email protected]>
1 parent 2af7037 commit b721f2c

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

libs/libxx/libcxxabi.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ endforeach()
9696
# RTTI is required for building the libcxxabi library
9797
target_compile_options(libcxxabi PRIVATE -frtti)
9898

99+
if(CONFIG_SIM_UBSAN OR CONFIG_MM_UBSAN)
100+
target_compile_options(libcxxabi PRIVATE -fno-sanitize=vptr)
101+
endif()
102+
99103
target_sources(libcxxabi PRIVATE ${TARGET_SRCS})
100104
target_compile_options(libcxxabi PRIVATE -frtti)
101105
target_include_directories(

libs/libxx/libcxxabi.defs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ endif
4747
ifeq ($(CONFIG_LIBCXXABI), y)
4848
CXXFLAGS += ${DEFINE_PREFIX}LIBCXX_BUILDING_LIBCXXABI
4949
CXXFLAGS += -I $(TOPDIR)/libs/libxx/libcxxabi/include
50+
51+
# Disable dynamic type checking when enabling libcxxabi
52+
# It results in a recursive call:
53+
# cxxabiv1::__dynamic_case -> is_equal -> __ubsan::checkDynamic -> cxxabiv1::__dynamic_case
54+
55+
ifneq ($(CONFIG_SIM_UBSAN)${CONFIG_MM_UBSAN},)
56+
CXXFLAGS += -fno-sanitize=vptr
57+
endif
5058
endif
5159

5260
# C++ABI files

0 commit comments

Comments
 (0)