Explorar o código

Merge branch 'bugfix/add_exception_emergency_pool_again_4.3' into 'release/v4.3'

[esp_system]: added __cxx_eh_arena_size_get again (backport 4.3)

See merge request espressif/esp-idf!14132
Ivan Grokhotkov %!s(int64=4) %!d(string=hai) anos
pai
achega
c836cef1a5
Modificáronse 1 ficheiros con 15 adicións e 0 borrados
  1. 15 0
      components/esp_system/startup.c

+ 15 - 0
components/esp_system/startup.c

@@ -135,6 +135,21 @@ static IRAM_ATTR void _Unwind_SetNoFunctionContextInstall_Default(unsigned char
 
 static const char* TAG = "cpu_start";
 
+/**
+ * This function overwrites a the same function of libsupc++ (part of libstdc++).
+ * Consequently, libsupc++ will then follow our configured exception emergency pool size.
+ *
+ * It will be called even with -fno-exception for user code since the stdlib still uses exceptions.
+ */
+size_t __cxx_eh_arena_size_get(void)
+{
+#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
+    return CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE;
+#else
+    return 0;
+#endif
+}
+
 /**
  * Xtensa gcc is configured to emit a .ctors section, RISC-V gcc is configured with --enable-initfini-array
  * so it emits an .init_array section instead.