Explorar o código

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

This reverts commit 3d0466ccd1bf2925ffd881eb63798abe199ce6fe.
Anton Maklakov %!s(int64=6) %!d(string=hai) anos
pai
achega
4f297ed3fa

+ 0 - 6
CMakeLists.txt

@@ -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"

+ 0 - 9
Kconfig

@@ -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

+ 0 - 5
components/esp32/CMakeLists.txt

@@ -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" 

+ 8 - 13
components/esp32/component.mk

@@ -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 \

+ 0 - 11
components/esp32/ld/esp32.discard-rtti.ld

@@ -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
-}

+ 0 - 5
components/esp32/ld/esp32.ld

@@ -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)

+ 1 - 6
make/project.mk

@@ -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

+ 2 - 1
tools/cmake/build.cmake

@@ -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)