zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 37a34b54afee183f397cf708ac8d074fa7cc92d6 (tree)
parent f8372d030e50b6eec50fd21a387b4d875f81a178
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Fri,  6 Dec 2024 14:07:15 +0100

compiler: Recognize libgcc_s regardless of target ABI.

The real libgcc_s is a compiler-provided library; it works just fine with both
glibc and musl. There's no reason that I can see for this check to be limited to
glibc-based targets.

Diffstat:
Msrc/main.zig | 2+-
Msrc/target.zig | 4++--
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main.zig b/src/main.zig @@ -3832,7 +3832,7 @@ fn createModule( create_module.opts.link_libcpp = true; continue; } - switch (target_util.classifyCompilerRtLibName(target, lib_name)) { + switch (target_util.classifyCompilerRtLibName(lib_name)) { .none => {}, .only_libunwind, .both => { create_module.opts.link_libunwind = true; diff --git a/src/target.zig b/src/target.zig @@ -260,8 +260,8 @@ pub fn supportsReturnAddress(target: std.Target) bool { pub const CompilerRtClassification = enum { none, only_compiler_rt, only_libunwind, both }; -pub fn classifyCompilerRtLibName(target: std.Target, name: []const u8) CompilerRtClassification { - if (target.abi.isGnu() and std.mem.eql(u8, name, "gcc_s")) { +pub fn classifyCompilerRtLibName(name: []const u8) CompilerRtClassification { + if (std.mem.eql(u8, name, "gcc_s")) { // libgcc_s includes exception handling functions, so if linking this library // is requested, zig needs to instead link libunwind. Otherwise we end up with // the linker unable to find `_Unwind_RaiseException` and other related symbols.