diff --git a/lib/libc/glibc/sysdeps/mips/mips32/crtn.S b/lib/libc/glibc/sysdeps/mips/mips32/crtn.S index 89ecbd9882f2d1f6484129fe4cb56bb295dc5c53..4fd4c745d914ad1f18c43fb8bc2af812f386faab 100644 --- a/lib/libc/glibc/sysdeps/mips/mips32/crtn.S +++ b/lib/libc/glibc/sysdeps/mips/mips32/crtn.S @@ -42,7 +42,8 @@ lw $31,28($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 addiu $sp,$sp,32 .set macro .set reorder @@ -51,7 +52,8 @@ lw $31,28($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 addiu $sp,$sp,32 .set macro .set reorder diff --git a/lib/libc/glibc/sysdeps/mips/mips64/n32/crtn.S b/lib/libc/glibc/sysdeps/mips/mips64/n32/crtn.S index 633d79cfad992dd80472b33e5ed5c8cfcd3729d5..f9a6c7ee4c6d2a5c6caa1301f029753274a753ec 100644 --- a/lib/libc/glibc/sysdeps/mips/mips64/n32/crtn.S +++ b/lib/libc/glibc/sysdeps/mips/mips64/n32/crtn.S @@ -43,7 +43,8 @@ ld $28,0($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 addiu $sp,$sp,16 .set macro .set reorder @@ -53,7 +54,8 @@ ld $28,0($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 addiu $sp,$sp,16 .set macro .set reorder diff --git a/lib/libc/glibc/sysdeps/mips/mips64/n64/crtn.S b/lib/libc/glibc/sysdeps/mips/mips64/n64/crtn.S index 99ed1e32631d2d119aa83b3da54db52b32ba816e..2722b2812c1e1202091ff3bb856b4bd4ce98edb2 100644 --- a/lib/libc/glibc/sysdeps/mips/mips64/n64/crtn.S +++ b/lib/libc/glibc/sysdeps/mips/mips64/n64/crtn.S @@ -43,7 +43,8 @@ ld $28,0($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 daddiu $sp,$sp,16 .set macro .set reorder @@ -53,7 +54,8 @@ ld $28,0($sp) .set noreorder .set nomacro - j $31 + /* zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 */ + jr $31 daddiu $sp,$sp,16 .set macro .set reorder diff --git a/lib/libc/glibc/sysdeps/unix/mips/sysdep.h b/lib/libc/glibc/sysdeps/unix/mips/sysdep.h index d1e0460260cd4d62f0cad7525d96570c13a720b2..54e92b26d04449f12fff23c2ae322a230e31226e 100644 --- a/lib/libc/glibc/sysdeps/unix/mips/sysdep.h +++ b/lib/libc/glibc/sysdeps/unix/mips/sysdep.h @@ -39,7 +39,8 @@ .end function; \ .size function,.-function -#define ret j ra ; nop +// zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 +#define ret jr ra ; nop #undef PSEUDO_END #define PSEUDO_END(sym) cfi_endproc; .end sym; .size sym,.-sym diff --git a/lib/libc/musl/crt/mips/crtn.s b/lib/libc/musl/crt/mips/crtn.s index 506a04b78c0d0a02e8d687935390bb9fbf5c15db..5146d83a0e9f85dd86a11858a5fb75a77e448f77 100644 --- a/lib/libc/musl/crt/mips/crtn.s +++ b/lib/libc/musl/crt/mips/crtn.s @@ -3,11 +3,13 @@ .section .init lw $gp,24($sp) lw $ra,28($sp) - j $ra + # zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 + jr $ra addu $sp,$sp,32 .section .fini lw $gp,24($sp) lw $ra,28($sp) - j $ra + # zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 + jr $ra addu $sp,$sp,32 diff --git a/lib/libc/musl/crt/mips64/crtn.s b/lib/libc/musl/crt/mips64/crtn.s index f3930b240690da49c6041b799decaf8220cdeb2b..dc4dbb03ad05f08abc6b5fcea9e6f0c65a431a51 100644 --- a/lib/libc/musl/crt/mips64/crtn.s +++ b/lib/libc/musl/crt/mips64/crtn.s @@ -3,11 +3,13 @@ .section .init ld $gp,16($sp) ld $ra,24($sp) - j $ra + # zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 + jr $ra daddu $sp,$sp,32 .section .fini ld $gp,16($sp) ld $ra,24($sp) - j $ra + # zig patch: j -> jr for https://github.com/ziglang/zig/issues/21315 + jr $ra daddu $sp,$sp,32