summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.toolchain2
-rw-r--r--core/cortex-m/ec.lds.S8
2 files changed, 10 insertions, 0 deletions
diff --git a/Makefile.toolchain b/Makefile.toolchain
index fe7bfd7a83..8286be1e7c 100644
--- a/Makefile.toolchain
+++ b/Makefile.toolchain
@@ -115,6 +115,8 @@ C_WARN = -Wstrict-prototypes -Wdeclaration-after-statement -Wno-pointer-sign
COMMON_WARN = -Wall -Wundef -Werror-implicit-function-declaration \
-Wno-trigraphs -Wno-format-security -Wno-address-of-packed-member \
-fno-common -fno-strict-aliasing -fno-strict-overflow
+# See https://www.chromium.org/chromium-os/build/c-exception-support
+COMMON_WARN+=-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ifndef ALLOW_WARNINGS
COMMON_WARN+=-Werror
diff --git a/core/cortex-m/ec.lds.S b/core/cortex-m/ec.lds.S
index 8580e366b7..f5679a97f6 100644
--- a/core/cortex-m/ec.lds.S
+++ b/core/cortex-m/ec.lds.S
@@ -347,6 +347,14 @@ SECTIONS
. = ALIGN(64);
KEEP(*(.google))
#endif
+ /*
+ * Empty C++ exception index table. The exception index
+ * table is described in more detail in "Exception Handling
+ * ABI for ARM Architecture":
+ * https://github.com/ARM-software/abi-aa/blob/60a8eb8c55e999d74dac5e368fc9d7e36e38dda4/ehabi32/ehabi32.rst#54the-object-producer-interface
+ */
+ __exidx_start = 0;
+ __exidx_end = 0;
. = ALIGN(4);
} > EC_IMAGE_VMA_MEM_REGION AT > EC_IMAGE_LMA_MEM_REGION