Commit d7daf7c203

Jacob Young <jacobly0@users.noreply.github.com>
2023-08-13 11:55:00
start: workaround for LLVM 17 regression
Tracking issue #16799
1 parent 39f1d96
Changed files (1)
lib
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
             ,