diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-08-13 05:55:00 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-09-19 09:37:32 -0700 |
| commit | d7daf7c203f583ed440efc68df6ee690ee8f8f32 (patch) | |
| tree | 363f635f1b086e7be86cfec948f0ec4b61db52ba /lib/std/start.zig | |
| parent | 39f1d96a2fd6aee5bf38b596db5a642bbba3a82d (diff) | |
| download | zig-d7daf7c203f583ed440efc68df6ee690ee8f8f32.tar.gz zig-d7daf7c203f583ed440efc68df6ee690ee8f8f32.zip | |
start: workaround for LLVM 17 regression
Tracking issue #16799
Diffstat (limited to 'lib/std/start.zig')
| -rw-r--r-- | lib/std/start.zig | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/std/start.zig b/lib/std/start.zig index d2099ca803..36379960a4 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn { : [tos] "={rax}" (-> *std.os.plan9.Tos), ); } + switch (native_arch) { + // https://github.com/ziglang/zig/issues/16799 + .riscv64 => @export(argc_argv_ptr, .{ + .name = "__zig_argc_argv_ptr", + .visibility = .hidden, + }), + else => {}, + } asm volatile (switch (native_arch) { .x86_64 => \\ xorl %%ebp, %%ebp @@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn { .riscv64 => \\ li s0, 0 \\ li ra, 0 - \\ sd sp, %[argc_argv_ptr] + \\ lui a0, %hi(__zig_argc_argv_ptr) + \\ sd sp, %lo(__zig_argc_argv_ptr)(a0) \\ andi sp, sp, -16 \\ tail %[posixCallMainAndExit]@plt , |
