| ... | @@ -128,18 +128,31 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { | ... | @@ -128,18 +128,31 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { |
| 128 | : [ret] "=r" (-> [*]const elf.Dyn), | 128 | : [ret] "=r" (-> [*]const elf.Dyn), |
| 129 | : | 129 | : |
| 130 | : .{ .lr = true }), | 130 | : .{ .lr = true }), |
| 131 | .mips64, .mips64el => asm volatile ( | 131 | .mips64, .mips64el => switch (builtin.abi) { |
| 132 | \\ .weak _DYNAMIC | 132 | .gnuabin32, .muslabin32 => asm volatile ( |
| 133 | \\ .hidden _DYNAMIC | 133 | \\ .weak _DYNAMIC |
| 134 | \\ .balign 8 | 134 | \\ .hidden _DYNAMIC |
| 135 | \\ bal 1f | 135 | \\ bal 1f |
| 136 | \\ .gpdword _DYNAMIC | 136 | \\ .gpword _DYNAMIC |
| 137 | \\1: | 137 | \\1: |
| 138 | \\ ld %[ret], 0($ra) | 138 | \\ lw %[ret], 0($ra) |
| 139 | \\ daddu %[ret], %[ret], $gp | 139 | \\ addu %[ret], %[ret], $gp |
| 140 | : [ret] "=r" (-> [*]const elf.Dyn), | 140 | : [ret] "=r" (-> [*]const elf.Dyn), |
| 141 | : | 141 | : |
| 142 | : .{ .lr = true }), | 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 | }, |
| 143 | .powerpc, .powerpcle => asm volatile ( | 156 | .powerpc, .powerpcle => asm volatile ( |
| 144 | \\ .weak _DYNAMIC | 157 | \\ .weak _DYNAMIC |
| 145 | \\ .hidden _DYNAMIC | 158 | \\ .hidden _DYNAMIC |