zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 5e3c31336668c2d221f82eb41b5ee1a2432948ad (tree)
parent 23055273421675a3709218a941d8cbb9c9d6ed0a
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Sat, 18 Oct 2025 12:13:41 +0200

std.pie: fix getDynamicSymbol() for mipsn32

Diffstat:
Mlib/std/pie.zig | 37+++++++++++++++++++++++++------------
1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/lib/std/pie.zig b/lib/std/pie.zig @@ -128,18 +128,31 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { : [ret] "=r" (-> [*]const elf.Dyn), : : .{ .lr = true }), - .mips64, .mips64el => asm volatile ( - \\ .weak _DYNAMIC - \\ .hidden _DYNAMIC - \\ .balign 8 - \\ bal 1f - \\ .gpdword _DYNAMIC - \\1: - \\ ld %[ret], 0($ra) - \\ daddu %[ret], %[ret], $gp - : [ret] "=r" (-> [*]const elf.Dyn), - : - : .{ .lr = true }), + .mips64, .mips64el => switch (builtin.abi) { + .gnuabin32, .muslabin32 => asm volatile ( + \\ .weak _DYNAMIC + \\ .hidden _DYNAMIC + \\ bal 1f + \\ .gpword _DYNAMIC + \\1: + \\ lw %[ret], 0($ra) + \\ addu %[ret], %[ret], $gp + : [ret] "=r" (-> [*]const elf.Dyn), + : + : .{ .lr = true }), + else => asm volatile ( + \\ .weak _DYNAMIC + \\ .hidden _DYNAMIC + \\ .balign 8 + \\ bal 1f + \\ .gpdword _DYNAMIC + \\1: + \\ ld %[ret], 0($ra) + \\ daddu %[ret], %[ret], $gp + : [ret] "=r" (-> [*]const elf.Dyn), + : + : .{ .lr = true }), + }, .powerpc, .powerpcle => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC