authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 12:13:41+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 12:13:41+02:00
log5e3c31336668c2d221f82eb41b5ee1a2432948ad
tree85702f5be40b32d325162f056baa7e49d0ec8908
parent23055273421675a3709218a941d8cbb9c9d6ed0a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.pie: fix getDynamicSymbol() for mipsn32


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

lib/std/pie.zig+25-12
......@@ -128,18 +128,31 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
128128 : [ret] "=r" (-> [*]const elf.Dyn),
129129 :
130130 : .{ .lr = true }),
131 .mips64, .mips64el => asm volatile (
132 \\ .weak _DYNAMIC
133 \\ .hidden _DYNAMIC
134 \\ .balign 8
135 \\ bal 1f
136 \\ .gpdword _DYNAMIC
137 \\1:
138 \\ ld %[ret], 0($ra)
139 \\ daddu %[ret], %[ret], $gp
140 : [ret] "=r" (-> [*]const elf.Dyn),
141 :
142 : .{ .lr = true }),
131 .mips64, .mips64el => switch (builtin.abi) {
132 .gnuabin32, .muslabin32 => asm volatile (
133 \\ .weak _DYNAMIC
134 \\ .hidden _DYNAMIC
135 \\ bal 1f
136 \\ .gpword _DYNAMIC
137 \\1:
138 \\ lw %[ret], 0($ra)
139 \\ addu %[ret], %[ret], $gp
140 : [ret] "=r" (-> [*]const elf.Dyn),
141 :
142 : .{ .lr = true }),
143 else => asm volatile (
144 \\ .weak _DYNAMIC
145 \\ .hidden _DYNAMIC
146 \\ .balign 8
147 \\ bal 1f
148 \\ .gpdword _DYNAMIC
149 \\1:
150 \\ ld %[ret], 0($ra)
151 \\ daddu %[ret], %[ret], $gp
152 : [ret] "=r" (-> [*]const elf.Dyn),
153 :
154 : .{ .lr = true }),
155 },
143156 .powerpc, .powerpcle => asm volatile (
144157 \\ .weak _DYNAMIC
145158 \\ .hidden _DYNAMIC