Revert "C++: add provisions for optional RTTI support"

This reverts commit 3d0466ccd1.
This commit is contained in:
Anton Maklakov 2019-10-31 13:26:53 +07:00
parent 8eaa440221
commit 4f297ed3fa
8 changed files with 11 additions and 56 deletions

View File

@ -22,12 +22,6 @@ else()
list(APPEND cxx_compile_options "-fno-exceptions")
endif()
if(CONFIG_COMPILER_CXX_RTTI)
list(APPEND cxx_compile_options "-frtti")
else()
list(APPEND cxx_compile_options "-fno-rtti")
endif()
if(CONFIG_COMPILER_DISABLE_GCC8_WARNINGS)
list(APPEND compile_options "-Wno-parentheses"
"-Wno-sizeof-pointer-memaccess"

View File

@ -149,15 +149,6 @@ mainmenu "Espressif IoT Development Framework Configuration"
Size (in bytes) of the emergency memory pool for C++ exceptions. This pool will be used to allocate
memory for thrown exceptions when there is not enough memory on the heap.
config COMPILER_CXX_RTTI
# Invisible option, until the toolchain with RTTI support is released.
# Use prompt "Enable C++ run-time type info (RTTI)" when updating.
bool
help
Enabling this option compiles all C++ files with RTTI support enabled.
This increases binary size (typically by tens of kB) but allows using
dynamic_cast conversion and typeid operator.
choice COMPILER_STACK_CHECK_MODE
prompt "Stack smashing protection mode"
default COMPILER_STACK_CHECK_MODE_NONE

View File

@ -56,11 +56,6 @@ else()
target_linker_script(${COMPONENT_LIB} INTERFACE "ld/esp32.extram.bss.ld")
endif()
if(NOT CONFIG_COMPILER_CXX_RTTI)
# This has to be linked before esp32.project.ld
target_linker_script(${COMPONENT_LIB} INTERFACE "ld/esp32.discard-rtti.ld")
endif()
# Process the template file through the linker script generation mechanism, and use the output for linking the
# final binary
target_linker_script(${COMPONENT_LIB} INTERFACE "${CMAKE_CURRENT_LIST_DIR}/ld/esp32.project.ld.in"

View File

@ -5,23 +5,18 @@
COMPONENT_SRCDIRS := .
ifdef CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY
# This linker script must come before esp32.project.ld
LINKER_SCRIPTS += esp32.extram.bss.ld
# This linker script must come before esp32.project.ld
LINKER_SCRIPTS += esp32.extram.bss.ld
endif
ifndef CONFIG_COMPILER_CXX_RTTI
# This linker script must come before esp32.project.ld
LINKER_SCRIPTS += esp32.discard-rtti.ld
endif
# Linker scripts used to link the final application.
# Warning: These linker scripts are only used when the normal app is compiled; the bootloader
# specifies its own scripts.
#Linker scripts used to link the final application.
#Warning: These linker scripts are only used when the normal app is compiled; the bootloader
#specifies its own scripts.
LINKER_SCRIPTS += $(COMPONENT_BUILD_DIR)/esp32.project.ld esp32.peripherals.ld
# ld_include_panic_highint_hdl is added as an undefined symbol because otherwise the
# linker will ignore panic_highint_hdl.S as it has no other files depending on any
# symbols in it.
#ld_include_panic_highint_hdl is added as an undefined symbol because otherwise the
#linker will ignore panic_highint_hdl.S as it has no other files depending on any
#symbols in it.
COMPONENT_ADD_LDFLAGS += -L $(COMPONENT_PATH)/ld \
-T esp32_out.ld \
-u ld_include_panic_highint_hdl \

View File

@ -1,11 +0,0 @@
/* This is only included if CONFIG_COMPILER_CXX_RTTI is not set, to
* move RTTI sections of libstdc++ to an unused non-loadable memory region.
*/
SECTIONS
{
.rodata.discard-rtti (NOLOAD):
{
*libstdc++.a:(.rodata._ZTI* .rodata._ZTS*)
} > discard_seg
}

View File

@ -86,11 +86,6 @@ MEMORY
/* external memory ,including data and text */
extern_ram_seg(RWX) : org = 0x3F800000,
len = 0x400000
/* This is not a memory range which can really be accessed; we use it as a "bitbucket"
where non-loadable sections, which aren't used at run time, can be discarded.
*/
discard_seg (R) : org = 0x00000000, len = 0x10000000
}
#if defined(CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE)

View File

@ -452,6 +452,7 @@ CXXFLAGS ?=
EXTRA_CXXFLAGS ?=
CXXFLAGS := $(strip \
-std=gnu++11 \
-fno-rtti \
$(OPTIMIZATION_FLAGS) $(DEBUG_FLAGS) \
$(COMMON_FLAGS) \
$(COMMON_WARNING_FLAGS) \
@ -464,12 +465,6 @@ else
CXXFLAGS += -fno-exceptions
endif
ifdef CONFIG_COMPILER_CXX_RTTI
CXXFLAGS += -frtti
else
CXXFLAGS += -fno-rtti
endif
ARFLAGS := cru
export CFLAGS CPPFLAGS CXXFLAGS ARFLAGS

View File

@ -114,7 +114,8 @@ function(__build_set_default_build_specifications)
list(APPEND c_compile_options "-std=gnu99"
"-Wno-old-style-declaration")
list(APPEND cxx_compile_options "-std=gnu++11")
list(APPEND cxx_compile_options "-std=gnu++11"
"-fno-rtti")
idf_build_set_property(COMPILE_DEFINITIONS "${compile_definitions}" APPEND)
idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND)