| ... | ... | @@ -128,18 +128,31 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { |
| 128 | 128 | : [ret] "=r" (-> [*]const elf.Dyn), |
| 129 | 129 | : |
| 130 | 130 | : .{ .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 | }, |
| 143 | 156 | .powerpc, .powerpcle => asm volatile ( |
| 144 | 157 | \\ .weak _DYNAMIC |
| 145 | 158 | \\ .hidden _DYNAMIC |