Skip to content

Commit 332add7

Browse files
committed
libunwind: Build C files with -fexceptions.
See: llvm/llvm-project#121819 This fixes LTO for libunwind, so also re-enable support for that. Closes ziglang#12828.
1 parent f38d7a9 commit 332add7

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

src/libunwind.zig

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ pub fn buildStaticLib(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
3636
.root_optimize_mode = comp.compilerRtOptMode(),
3737
.root_strip = comp.compilerRtStrip(),
3838
.link_libc = true,
39-
// Disable LTO to avoid https://github.com/llvm/llvm-project/issues/56825
40-
.lto = .none,
39+
.lto = comp.config.lto,
4140
}) catch |err| {
4241
comp.setMiscFailure(
4342
.libunwind,
@@ -102,18 +101,18 @@ pub fn buildStaticLib(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
102101

103102
switch (Compilation.classifyFileExt(unwind_src)) {
104103
.c => {
105-
try cflags.append("-std=c17");
104+
try cflags.appendSlice(&.{
105+
"-std=c99",
106+
"-fexceptions",
107+
});
106108
},
107109
.cpp => {
108-
try cflags.appendSlice(&[_][]const u8{
109-
"-std=c++17",
110-
"-fno-rtti",
111-
});
110+
try cflags.append("-fno-exceptions");
111+
try cflags.append("-fno-rtti");
112112
},
113113
.assembly_with_cpp => {},
114-
else => unreachable, // You can see the entire list of files just above.
114+
else => unreachable, // See `unwind_src_list`.
115115
}
116-
try cflags.append("-fno-exceptions");
117116
try cflags.append("-I");
118117
try cflags.append(try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libunwind", "include" }));
119118
try cflags.append("-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS");

0 commit comments

Comments
 (0)