commit e048c90545c4f7df1377f9fcdce14ce5e5a2056f (tree)
parent 2dca73595f8113c99c9293d0eae97d912e47fe88
Author: xtex <xtex@astrafall.org>
Date: Sun, 21 Jun 2026 21:50:47 +0800
std.elf: add R_LARCH relocations
Diffstat:
| M | lib/std/elf.zig | | | 135 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 135 insertions(+), 0 deletions(-)
diff --git a/lib/std/elf.zig b/lib/std/elf.zig
@@ -3001,6 +3001,141 @@ pub const R_PPC64 = enum(u32) {
_,
};
+/// LoongArch relocations, as of v2.50 of the ABI specs.
+pub const R_LARCH = enum(u32) {
+ NONE = 0,
+ @"32" = 1,
+ @"64" = 2,
+ RELATIVE = 3,
+ COPY = 4,
+ JUMP_SLOT = 5,
+ TLS_DTPMOD32 = 6,
+ TLS_DTPMOD64 = 7,
+ TLS_DTPREL32 = 8,
+ TLS_DTPREL64 = 9,
+ TLS_TPREL32 = 10,
+ TLS_TPREL64 = 11,
+ IRELATIVE = 12,
+ TLS_DESC32 = 13,
+ TLS_DESC64 = 14,
+ MARK_LA = 20,
+ MARK_PCREL = 21,
+ SOP_PUSH_PCREL = 22,
+ SOP_PUSH_ABSOLUTE = 23,
+ SOP_PUSH_DUP = 24,
+ SOP_PUSH_GPREL = 25,
+ SOP_PUSH_TLS_TPREL = 26,
+ SOP_PUSH_TLS_GOT = 27,
+ SOP_PUSH_TLS_GD = 28,
+ SOP_PUSH_PLT_PCREL = 29,
+ SOP_ASSERT = 30,
+ SOP_NOT = 31,
+ SOP_SUB = 32,
+ SOP_SL = 33,
+ SOP_SR = 34,
+ SOP_ADD = 35,
+ SOP_AND = 36,
+ SOP_IF_ELSE = 37,
+ SOP_POP_32_S_10_5 = 38,
+ SOP_POP_32_U_10_12 = 39,
+ SOP_POP_32_S_10_12 = 40,
+ SOP_POP_32_S_10_16 = 41,
+ SOP_POP_32_S_10_16_S2 = 42,
+ SOP_POP_32_S_5_20 = 43,
+ SOP_POP_32_S_0_5_10_16_S2 = 44,
+ SOP_POP_32_S_0_10_10_16_S2 = 45,
+ SOP_POP_32_U = 46,
+ ADD8 = 47,
+ ADD16 = 48,
+ ADD24 = 49,
+ ADD32 = 50,
+ ADD64 = 51,
+ SUB8 = 52,
+ SUB16 = 53,
+ SUB24 = 54,
+ SUB32 = 55,
+ SUB64 = 56,
+ GNU_VTINHERIT = 57,
+ GNU_VTENTRY = 58,
+ B16 = 64,
+ B21 = 65,
+ B26 = 66,
+ ABS_HI20 = 67,
+ ABS_LO12 = 68,
+ ABS64_LO20 = 69,
+ ABS64_HI12 = 70,
+ PCALA_HI20 = 71,
+ PCALA_LO12 = 72,
+ PCALA64_LO20 = 73,
+ PCALA64_HI12 = 74,
+ GOT_PC_HI20 = 75,
+ GOT_PC_LO12 = 76,
+ GOT64_PC_LO20 = 77,
+ GOT64_PC_HI12 = 78,
+ GOT_HI20 = 79,
+ GOT_LO12 = 80,
+ GOT64_LO20 = 81,
+ GOT64_HI12 = 82,
+ TLS_LE_HI20 = 83,
+ TLS_LE_LO12 = 84,
+ TLS_LE64_LO20 = 85,
+ TLS_LE64_HI12 = 86,
+ TLS_IE_PC_HI20 = 87,
+ TLS_IE_PC_LO12 = 88,
+ TLS_IE64_PC_LO20 = 89,
+ TLS_IE64_PC_HI12 = 90,
+ TLS_IE_HI20 = 91,
+ TLS_IE_LO12 = 92,
+ TLS_IE64_LO20 = 93,
+ TLS_IE64_HI12 = 94,
+ TLS_LD_PC_HI20 = 95,
+ TLS_LD_HI20 = 96,
+ TLS_GD_PC_HI20 = 97,
+ TLS_GD_HI20 = 98,
+ @"32_PCREL" = 99,
+ RELAX = 100,
+ DELETE = 101,
+ ALIGN = 102,
+ PCREL20_S2 = 103,
+ CFA = 104,
+ ADD6 = 105,
+ SUB6 = 106,
+ ADD_ULEB128 = 107,
+ SUB_ULEB128 = 108,
+ @"64_PCREL" = 109,
+ CALL36 = 110,
+ TLS_DESC_PC_HI20 = 111,
+ TLS_DESC_PC_LO12 = 112,
+ TLS_DESC64_PC_LO20 = 113,
+ TLS_DESC64_PC_HI12 = 114,
+ TLS_DESC_HI20 = 115,
+ TLS_DESC_LO12 = 116,
+ TLS_DESC64_LO20 = 117,
+ TLS_DESC64_HI12 = 118,
+ TLS_DESC_LD = 119,
+ TLS_DESC_CALL = 120,
+ TLS_LE_HI20_R = 121,
+ TLS_LE_ADD_R = 122,
+ TLS_LE_LO12_R = 123,
+ TLS_LD_PCREL20_S2 = 124,
+ TLS_GD_PCREL20_S2 = 125,
+ TLS_DESC_PCREL20_S2 = 126,
+ CALL30 = 127,
+ PCADD_HI20 = 128,
+ PCADD_LO12 = 129,
+ GOT_PCADD_HI20 = 130,
+ GOT_PCADD_LO12 = 131,
+ TLS_IE_PCADD_HI20 = 132,
+ TLS_IE_PCADD_LO12 = 133,
+ TLS_LD_PCADD_HI20 = 134,
+ TLS_LD_PCADD_LO12 = 135,
+ TLS_GD_PCADD_HI20 = 136,
+ TLS_GD_PCADD_LO12 = 137,
+ TLS_DESC_PCADD_HI20 = 138,
+ TLS_DESC_PCADD_LO12 = 139,
+ _,
+};
+
pub const ar_hdr = extern struct {
/// Member file name, sometimes / terminated.
ar_name: [16]u8,