authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-08 02:44:02+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-09 16:56:20+02:00
log9ca1d1e6b1e7eef01f59703f10d7d4dcb10dfcfa
treee4a95d5ffed98fb178a016f848ffaaa50d957d88
parent1df99ba96a11fa8c16821018681683835cedb7cf
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: fix alpha _start assembly to be static PIE safe

jsr used in this way is a macro for ldq t12, <a>(gp) jsr ra, (t12), <b> with relocations on both instructions. br avoids this.

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

lib/std/start.zig+1-1
...@@ -247,7 +247,7 @@ fn _start() callconv(.naked) noreturn {...@@ -247,7 +247,7 @@ fn _start() callconv(.naked) noreturn {
247 \\ mov $30, $16247 \\ mov $30, $16
248 \\ ldi $1, -16248 \\ ldi $1, -16
249 \\ and $30, $30, $1249 \\ and $30, $30, $1
250 \\ jsr $26, %[posixCallMainAndExit]250 \\ br $31, %[posixCallMainAndExit]
251 ,251 ,
252 .arc, .arceb =>252 .arc, .arceb =>
253 // ARC v1 and v2 had a very low stack alignment requirement of 4; v3 increased it to 16.253 // ARC v1 and v2 had a very low stack alignment requirement of 4; v3 increased it to 16.