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

This reverts commit 499d087c91.
This commit is contained in:
Anton Maklakov 2019-10-31 10:12:16 +07:00
parent 785cc69959
commit d86ec0f367
8 changed files with 11 additions and 56 deletions

View file

@ -27,12 +27,6 @@ else()
list(APPEND cxx_compile_options "-fno-exceptions") list(APPEND cxx_compile_options "-fno-exceptions")
endif() 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) if(CONFIG_COMPILER_DISABLE_GCC8_WARNINGS)
list(APPEND compile_options "-Wno-parentheses" list(APPEND compile_options "-Wno-parentheses"
"-Wno-sizeof-pointer-memaccess" "-Wno-sizeof-pointer-memaccess"

View file

@ -244,15 +244,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 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. 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 choice COMPILER_STACK_CHECK_MODE
prompt "Stack smashing protection mode" prompt "Stack smashing protection mode"
default COMPILER_STACK_CHECK_MODE_NONE default COMPILER_STACK_CHECK_MODE_NONE

View file

@ -62,11 +62,6 @@ else()
target_linker_script(${COMPONENT_LIB} INTERFACE "ld/esp32.extram.bss.ld") target_linker_script(${COMPONENT_LIB} INTERFACE "ld/esp32.extram.bss.ld")
endif() 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 # Process the template file through the linker script generation mechanism, and use the output for linking the
# final binary # final binary
target_linker_script(${COMPONENT_LIB} INTERFACE "${CMAKE_CURRENT_LIST_DIR}/ld/esp32.project.ld.in" target_linker_script(${COMPONENT_LIB} INTERFACE "${CMAKE_CURRENT_LIST_DIR}/ld/esp32.project.ld.in"

View file

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

@ -100,11 +100,6 @@ MEMORY
/* external memory ,including data and text */ /* external memory ,including data and text */
extern_ram_seg(RWX) : org = 0x3F800000, extern_ram_seg(RWX) : org = 0x3F800000,
len = 0x400000 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) #if defined(CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE)

View file

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

View file

@ -114,7 +114,8 @@ function(__build_set_default_build_specifications)
list(APPEND c_compile_options "-std=gnu99" list(APPEND c_compile_options "-std=gnu99"
"-Wno-old-style-declaration") "-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_DEFINITIONS "${compile_definitions}" APPEND)
idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND) idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND)