| author | |
| committer | |
| log | e919a0d175f15b9a3882259101954d77d12e6a5d |
| tree | 58f7d24af1265e228123a7b77ed49c840ff6fd9a |
| parent | 31f157d8079b020b6212256ea702ea0a15738408 |
| signature |
Haiku always loads executables through its dynamic linker.2 files changed, 10 insertions(+), 1 deletions(-)
src/Compilation/Config.zig+1-1| ... | ... | @@ -249,7 +249,7 @@ pub fn resolve(options: Options) ResolveError!Config { |
| 249 | 249 | if (options.link_mode == .dynamic) return error.TargetCannotDynamicLink; |
| 250 | 250 | break :b .static; |
| 251 | 251 | } |
| 252 | if (target.os.tag == .fuchsia and options.output_mode == .Exe) { | |
| 252 | if (!target_util.canStaticLinkExe(target) and options.output_mode == .Exe) { | |
| 253 | 253 | if (options.link_mode == .static) return error.TargetCannotStaticLinkExecutables; |
| 254 | 254 | break :b .dynamic; |
| 255 | 255 | } |
src/target.zig+9| ... | ... | @@ -31,6 +31,15 @@ pub fn canDynamicLink(target: *const std.Target) bool { |
| 31 | 31 | }; |
| 32 | 32 | } |
| 33 | 33 | |
| 34 | pub fn canStaticLinkExe(target: *const std.Target) bool { | |
| 35 | return switch (target.os.tag) { | |
| 36 | .fuchsia, | |
| 37 | .haiku, | |
| 38 | => false, | |
| 39 | else => true, | |
| 40 | }; | |
| 41 | } | |
| 42 | ||
| 34 | 43 | pub fn libCNeedsLibUnwind(target: *const std.Target, link_mode: std.lang.LinkMode) bool { |
| 35 | 44 | return target.isGnuLibC() and link_mode == .static; |
| 36 | 45 | } |