authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-08-13 05:55:00-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-19 09:37:32-07:00
logd7daf7c203f583ed440efc68df6ee690ee8f8f32
tree363f635f1b086e7be86cfec948f0ec4b61db52ba
parent39f1d96a2fd6aee5bf38b596db5a642bbba3a82d

start: workaround for LLVM 17 regression

Tracking issue #16799

1 files changed, 10 insertions(+), 1 deletions(-)

lib/std/start.zig+10-1
...@@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn {...@@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn {
240 : [tos] "={rax}" (-> *std.os.plan9.Tos),240 : [tos] "={rax}" (-> *std.os.plan9.Tos),
241 );241 );
242 }242 }
243 switch (native_arch) {
244 // https://github.com/ziglang/zig/issues/16799
245 .riscv64 => @export(argc_argv_ptr, .{
246 .name = "__zig_argc_argv_ptr",
247 .visibility = .hidden,
248 }),
249 else => {},
250 }
243 asm volatile (switch (native_arch) {251 asm volatile (switch (native_arch) {
244 .x86_64 =>252 .x86_64 =>
245 \\ xorl %%ebp, %%ebp253 \\ xorl %%ebp, %%ebp
...@@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn {...@@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn {
270 .riscv64 =>278 .riscv64 =>
271 \\ li s0, 0279 \\ li s0, 0
272 \\ li ra, 0280 \\ li ra, 0
273 \\ sd sp, %[argc_argv_ptr]281 \\ lui a0, %hi(__zig_argc_argv_ptr)
282 \\ sd sp, %lo(__zig_argc_argv_ptr)(a0)
274 \\ andi sp, sp, -16283 \\ andi sp, sp, -16
275 \\ tail %[posixCallMainAndExit]@plt284 \\ tail %[posixCallMainAndExit]@plt
276 ,285 ,