| ... | @@ -7,6 +7,7 @@ const R_AMD64_RELATIVE = 8; | ... | @@ -7,6 +7,7 @@ const R_AMD64_RELATIVE = 8; |
| 7 | const R_386_RELATIVE = 8; | 7 | const R_386_RELATIVE = 8; |
| 8 | const R_ARM_RELATIVE = 23; | 8 | const R_ARM_RELATIVE = 23; |
| 9 | const R_AARCH64_RELATIVE = 1027; | 9 | const R_AARCH64_RELATIVE = 1027; |
| | 10 | const R_LARCH_RELATIVE = 3; |
| 10 | const R_RISCV_RELATIVE = 3; | 11 | const R_RISCV_RELATIVE = 3; |
| 11 | const R_SPARC_RELATIVE = 22; | 12 | const R_SPARC_RELATIVE = 22; |
| 12 | | 13 | |
| ... | @@ -15,6 +16,7 @@ const R_RELATIVE = switch (builtin.cpu.arch) { | ... | @@ -15,6 +16,7 @@ const R_RELATIVE = switch (builtin.cpu.arch) { |
| 15 | .x86_64 => R_AMD64_RELATIVE, | 16 | .x86_64 => R_AMD64_RELATIVE, |
| 16 | .arm => R_ARM_RELATIVE, | 17 | .arm => R_ARM_RELATIVE, |
| 17 | .aarch64 => R_AARCH64_RELATIVE, | 18 | .aarch64 => R_AARCH64_RELATIVE, |
| | 19 | .loongarch32, .loongarch64 => R_LARCH_RELATIVE, |
| 18 | .riscv64 => R_RISCV_RELATIVE, | 20 | .riscv64 => R_RISCV_RELATIVE, |
| 19 | else => @compileError("Missing R_RELATIVE definition for this target"), | 21 | else => @compileError("Missing R_RELATIVE definition for this target"), |
| 20 | }; | 22 | }; |
| ... | @@ -57,6 +59,12 @@ fn getDynamicSymbol() [*]elf.Dyn { | ... | @@ -57,6 +59,12 @@ fn getDynamicSymbol() [*]elf.Dyn { |
| 57 | \\ add %[ret], %[ret], #:lo12:_DYNAMIC | 59 | \\ add %[ret], %[ret], #:lo12:_DYNAMIC |
| 58 | : [ret] "=r" (-> [*]elf.Dyn), | 60 | : [ret] "=r" (-> [*]elf.Dyn), |
| 59 | ), | 61 | ), |
| | 62 | .loongarch32, .loongarch64 => asm volatile ( |
| | 63 | \\ .weak _DYNAMIC |
| | 64 | \\ .hidden _DYNAMIC |
| | 65 | \\ la.local %[ret], _DYNAMIC |
| | 66 | : [ret] "=r" (-> [*]elf.Dyn), |
| | 67 | ), |
| 60 | .riscv64 => asm volatile ( | 68 | .riscv64 => asm volatile ( |
| 61 | \\ .weak _DYNAMIC | 69 | \\ .weak _DYNAMIC |
| 62 | \\ .hidden _DYNAMIC | 70 | \\ .hidden _DYNAMIC |