From 5385b0e2a53ea8dd46e6a4f7990397d1251e4511 Mon Sep 17 00:00:00 2001 From: Marnix Klooster Date: Mon, 3 Feb 2025 00:04:38 +0100 Subject: [PATCH] Enable 'unwind_tables' for all platforms (#373) For ARM-based embedded firmware this requires explicit declaration of `ARM.extab` sections in linker.d, otherwise the exception tables can incorrectly end up in RAM. (See https://github.com/ziglang/zig/issues/22685.) --- build.zig | 1 + tools/generate_linker_script.zig | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/build.zig b/build.zig index f4499992..cc9d0ba9 100644 --- a/build.zig +++ b/build.zig @@ -463,6 +463,7 @@ pub fn MicroBuild(port_select: PortSelect) type { .linkage = .static, .root_source_file = mb.core_dep.path("src/start.zig"), .strip = options.strip, + .unwind_tables = true, }), .app_mod = app_mod, .target = target, diff --git a/tools/generate_linker_script.zig b/tools/generate_linker_script.zig index 308b055e..8210c5be 100644 --- a/tools/generate_linker_script.zig +++ b/tools/generate_linker_script.zig @@ -107,6 +107,10 @@ pub fn main() !void { switch (program_args.cpu_arch) { .arm, .thumb => try writer.writeAll( + \\ .ARM.extab : { + \\ *(.ARM.extab* .gnu.linkonce.armextab.*) + \\ } >flash0 + \\ \\ .ARM.exidx : { \\ *(.ARM.exidx* .gnu.linkonce.armexidx.*) \\ } >flash0