diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 2b06ba33f476059917d6d0818d55b71d190ac374..8b54c13d98b37a4d55904ed250e083e2af6bc66f 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -845,6 +845,12 @@ pub const Abi = enum { => .eabi, else => .none, }, + .fuchsia => switch (arch) { + .arm, + .thumb, + => .eabihf, + else => .none, + }, .haiku => switch (arch) { .arm, .powerpc, @@ -928,7 +934,6 @@ pub const Abi = enum { .wasi, .emscripten => .musl, .contiki, - .fuchsia, .hermit, .illumos, .managarm, @@ -2442,8 +2447,10 @@ pub const DynamicLinker = struct { pub fn standard(cpu: Cpu, os: Os, abi: Abi) DynamicLinker { return switch (os.tag) { .fuchsia => switch (cpu.arch) { + .arm, .aarch64, .riscv64, + .thumb, .x86_64, => init("ld.so.1"), // Fuchsia is unusual in that `DT_INTERP` is just a basename. else => none, diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 140f4ab185463eab0105b258a83198d28ed425b4..6b768a277c3c5b981779715d22263bff22535c16 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -52,6 +52,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf }, + .{ .cpu_arch = .arm, .os_tag = .fuchsia, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi }, @@ -255,6 +256,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf }, + .{ .cpu_arch = .thumb, .os_tag = .fuchsia, .abi = .eabihf }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf }, .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi },