authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-17 09:02:31+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-17 09:04:06+01:00
log601aa10b82a43a9d566e8de3cb784929185411b4
tree27860b97fefcfba2c04c1f335121fae485bb7ed0
parent5122a3d2d9fc3f7a06eb2de56ea65e9ec99d9af8

elf: add riscv64 dynamic relocs mapping


1 files changed, 37 insertions(+), 193 deletions(-)

src/link/Elf/relocation.zig+37-193
...@@ -11,30 +11,42 @@ pub const Kind = enum {...@@ -11,30 +11,42 @@ pub const Kind = enum {
11 tlsdesc,11 tlsdesc,
12};12};
1313
14const x86_64_relocs = [_]struct { Kind, u32 }{14const x86_64_relocs = [_]struct { Kind, elf.R_X86_64 }{
15 .{ .abs, elf.R_X86_64_64 },15 .{ .abs, .R_X86_64_64 },
16 .{ .copy, elf.R_X86_64_COPY },16 .{ .copy, .R_X86_64_COPY },
17 .{ .rel, elf.R_X86_64_RELATIVE },17 .{ .rel, .R_X86_64_RELATIVE },
18 .{ .irel, elf.R_X86_64_IRELATIVE },18 .{ .irel, .R_X86_64_IRELATIVE },
19 .{ .glob_dat, elf.R_X86_64_GLOB_DAT },19 .{ .glob_dat, .R_X86_64_GLOB_DAT },
20 .{ .jump_slot, elf.R_X86_64_JUMP_SLOT },20 .{ .jump_slot, .R_X86_64_JUMP_SLOT },
21 .{ .dtpmod, elf.R_X86_64_DTPMOD64 },21 .{ .dtpmod, .R_X86_64_DTPMOD64 },
22 .{ .dtpoff, elf.R_X86_64_DTPOFF64 },22 .{ .dtpoff, .R_X86_64_DTPOFF64 },
23 .{ .tpoff, elf.R_X86_64_TPOFF64 },23 .{ .tpoff, .R_X86_64_TPOFF64 },
24 .{ .tlsdesc, elf.R_X86_64_TLSDESC },24 .{ .tlsdesc, .R_X86_64_TLSDESC },
25};25};
2626
27const aarch64_relocs = [_]struct { Kind, u32 }{27const aarch64_relocs = [_]struct { Kind, elf.R_AARCH64 }{
28 .{ .abs, elf.R_AARCH64_ABS64 },28 .{ .abs, .R_AARCH64_ABS64 },
29 .{ .copy, elf.R_AARCH64_COPY },29 .{ .copy, .R_AARCH64_COPY },
30 .{ .rel, elf.R_AARCH64_RELATIVE },30 .{ .rel, .R_AARCH64_RELATIVE },
31 .{ .irel, elf.R_AARCH64_IRELATIVE },31 .{ .irel, .R_AARCH64_IRELATIVE },
32 .{ .glob_dat, elf.R_AARCH64_GLOB_DAT },32 .{ .glob_dat, .R_AARCH64_GLOB_DAT },
33 .{ .jump_slot, elf.R_AARCH64_JUMP_SLOT },33 .{ .jump_slot, .R_AARCH64_JUMP_SLOT },
34 .{ .dtpmod, elf.R_AARCH64_TLS_DTPMOD },34 .{ .dtpmod, .R_AARCH64_TLS_DTPMOD },
35 .{ .dtpoff, elf.R_AARCH64_TLS_DTPREL },35 .{ .dtpoff, .R_AARCH64_TLS_DTPREL },
36 .{ .tpoff, elf.R_AARCH64_TLS_TPREL },36 .{ .tpoff, .R_AARCH64_TLS_TPREL },
37 .{ .tlsdesc, elf.R_AARCH64_TLSDESC },37 .{ .tlsdesc, .R_AARCH64_TLSDESC },
38};
39
40const riscv64_relocs = [_]struct { Kind, elf.R_RISCV }{
41 .{ .abs, .R_RISCV_64 },
42 .{ .copy, .R_RISCV_COPY },
43 .{ .rel, .R_RISCV_RELATIVE },
44 .{ .irel, .R_RISCV_IRELATIVE },
45 .{ .jump_slot, .R_RISCV_JUMP_SLOT },
46 .{ .dtpmod, .R_RISCV_TLS_DTPMOD64 },
47 .{ .dtpoff, .R_RISCV_TLS_DTPREL64 },
48 .{ .tpoff, .R_RISCV_TLS_TPREL64 },
49 .{ .tpoff, .R_RISCV_TLS_TPREL64 },
38};50};
3951
40pub fn decode(r_type: u32, cpu_arch: std.Target.Cpu.Arch) ?Kind {52pub fn decode(r_type: u32, cpu_arch: std.Target.Cpu.Arch) ?Kind {
...@@ -83,177 +95,9 @@ fn formatRelocType(...@@ -83,177 +95,9 @@ fn formatRelocType(
83 _ = options;95 _ = options;
84 const r_type = ctx.r_type;96 const r_type = ctx.r_type;
85 const str = switch (ctx.cpu_arch) {97 const str = switch (ctx.cpu_arch) {
86 .x86_64 => switch (r_type) {98 .x86_64 => @tagName(@as(elf.R_X86_64, @enumFromInt(r_type))),
87 elf.R_X86_64_NONE => "R_X86_64_NONE",99 .aarch64 => @tagName(@as(elf.R_AARCH64, @enumFromInt(r_type))),
88 elf.R_X86_64_64 => "R_X86_64_64",100 .riscv64 => @tagName(@as(elf.R_RISCV, @enumFromInt(r_type))),
89 elf.R_X86_64_PC32 => "R_X86_64_PC32",
90 elf.R_X86_64_GOT32 => "R_X86_64_GOT32",
91 elf.R_X86_64_PLT32 => "R_X86_64_PLT32",
92 elf.R_X86_64_COPY => "R_X86_64_COPY",
93 elf.R_X86_64_GLOB_DAT => "R_X86_64_GLOB_DAT",
94 elf.R_X86_64_JUMP_SLOT => "R_X86_64_JUMP_SLOT",
95 elf.R_X86_64_RELATIVE => "R_X86_64_RELATIVE",
96 elf.R_X86_64_GOTPCREL => "R_X86_64_GOTPCREL",
97 elf.R_X86_64_32 => "R_X86_64_32",
98 elf.R_X86_64_32S => "R_X86_64_32S",
99 elf.R_X86_64_16 => "R_X86_64_16",
100 elf.R_X86_64_PC16 => "R_X86_64_PC16",
101 elf.R_X86_64_8 => "R_X86_64_8",
102 elf.R_X86_64_PC8 => "R_X86_64_PC8",
103 elf.R_X86_64_DTPMOD64 => "R_X86_64_DTPMOD64",
104 elf.R_X86_64_DTPOFF64 => "R_X86_64_DTPOFF64",
105 elf.R_X86_64_TPOFF64 => "R_X86_64_TPOFF64",
106 elf.R_X86_64_TLSGD => "R_X86_64_TLSGD",
107 elf.R_X86_64_TLSLD => "R_X86_64_TLSLD",
108 elf.R_X86_64_DTPOFF32 => "R_X86_64_DTPOFF32",
109 elf.R_X86_64_GOTTPOFF => "R_X86_64_GOTTPOFF",
110 elf.R_X86_64_TPOFF32 => "R_X86_64_TPOFF32",
111 elf.R_X86_64_PC64 => "R_X86_64_PC64",
112 elf.R_X86_64_GOTOFF64 => "R_X86_64_GOTOFF64",
113 elf.R_X86_64_GOTPC32 => "R_X86_64_GOTPC32",
114 elf.R_X86_64_GOT64 => "R_X86_64_GOT64",
115 elf.R_X86_64_GOTPCREL64 => "R_X86_64_GOTPCREL64",
116 elf.R_X86_64_GOTPC64 => "R_X86_64_GOTPC64",
117 elf.R_X86_64_GOTPLT64 => "R_X86_64_GOTPLT64",
118 elf.R_X86_64_PLTOFF64 => "R_X86_64_PLTOFF64",
119 elf.R_X86_64_SIZE32 => "R_X86_64_SIZE32",
120 elf.R_X86_64_SIZE64 => "R_X86_64_SIZE64",
121 elf.R_X86_64_GOTPC32_TLSDESC => "R_X86_64_GOTPC32_TLSDESC",
122 elf.R_X86_64_TLSDESC_CALL => "R_X86_64_TLSDESC_CALL",
123 elf.R_X86_64_TLSDESC => "R_X86_64_TLSDESC",
124 elf.R_X86_64_IRELATIVE => "R_X86_64_IRELATIVE",
125 elf.R_X86_64_RELATIVE64 => "R_X86_64_RELATIVE64",
126 elf.R_X86_64_GOTPCRELX => "R_X86_64_GOTPCRELX",
127 elf.R_X86_64_REX_GOTPCRELX => "R_X86_64_REX_GOTPCRELX",
128 elf.R_X86_64_NUM => "R_X86_64_NUM",
129 else => "R_X86_64_UNKNOWN",
130 },
131 .aarch64 => switch (r_type) {
132 elf.R_AARCH64_NONE => "R_AARCH64_NONE",
133 elf.R_AARCH64_ABS64 => "R_AARCH64_ABS64",
134 elf.R_AARCH64_ABS32 => "R_AARCH64_ABS32",
135 elf.R_AARCH64_ABS16 => "R_AARCH64_ABS16",
136 elf.R_AARCH64_PREL64 => "R_AARCH64_PREL64",
137 elf.R_AARCH64_PREL32 => "R_AARCH64_PREL32",
138 elf.R_AARCH64_PREL16 => "R_AARCH64_PREL16",
139 elf.R_AARCH64_MOVW_UABS_G0 => "R_AARCH64_MOVW_UABS_G0",
140 elf.R_AARCH64_MOVW_UABS_G0_NC => "R_AARCH64_MOVW_UABS_G0_NC",
141 elf.R_AARCH64_MOVW_UABS_G1 => "R_AARCH64_MOVW_UABS_G1",
142 elf.R_AARCH64_MOVW_UABS_G1_NC => "R_AARCH64_MOVW_UABS_G1_NC",
143 elf.R_AARCH64_MOVW_UABS_G2 => "R_AARCH64_MOVW_UABS_G2",
144 elf.R_AARCH64_MOVW_UABS_G2_NC => "R_AARCH64_MOVW_UABS_G2_NC",
145 elf.R_AARCH64_MOVW_UABS_G3 => "R_AARCH64_MOVW_UABS_G3",
146 elf.R_AARCH64_MOVW_SABS_G0 => "R_AARCH64_MOVW_SABS_G0",
147 elf.R_AARCH64_MOVW_SABS_G1 => "R_AARCH64_MOVW_SABS_G1",
148 elf.R_AARCH64_MOVW_SABS_G2 => "R_AARCH64_MOVW_SABS_G2",
149 elf.R_AARCH64_LD_PREL_LO19 => "R_AARCH64_LD_PREL_LO19",
150 elf.R_AARCH64_ADR_PREL_LO21 => "R_AARCH64_ADR_PREL_LO21",
151 elf.R_AARCH64_ADR_PREL_PG_HI21 => "R_AARCH64_ADR_PREL_PG_HI21",
152 elf.R_AARCH64_ADR_PREL_PG_HI21_NC => "R_AARCH64_ADR_PREL_PG_HI21_NC",
153 elf.R_AARCH64_ADD_ABS_LO12_NC => "R_AARCH64_ADD_ABS_LO12_NC",
154 elf.R_AARCH64_LDST8_ABS_LO12_NC => "R_AARCH64_LDST8_ABS_LO12_NC",
155 elf.R_AARCH64_TSTBR14 => "R_AARCH64_TSTBR14",
156 elf.R_AARCH64_CONDBR19 => "R_AARCH64_CONDBR19",
157 elf.R_AARCH64_JUMP26 => "R_AARCH64_JUMP26",
158 elf.R_AARCH64_CALL26 => "R_AARCH64_CALL26",
159 elf.R_AARCH64_LDST16_ABS_LO12_NC => "R_AARCH64_LDST16_ABS_LO12_NC",
160 elf.R_AARCH64_LDST32_ABS_LO12_NC => "R_AARCH64_LDST32_ABS_LO12_NC",
161 elf.R_AARCH64_LDST64_ABS_LO12_NC => "R_AARCH64_LDST64_ABS_LO12_NC",
162 elf.R_AARCH64_MOVW_PREL_G0 => "R_AARCH64_MOVW_PREL_G0",
163 elf.R_AARCH64_MOVW_PREL_G0_NC => "R_AARCH64_MOVW_PREL_G0_NC",
164 elf.R_AARCH64_MOVW_PREL_G1 => "R_AARCH64_MOVW_PREL_G1",
165 elf.R_AARCH64_MOVW_PREL_G1_NC => "R_AARCH64_MOVW_PREL_G1_NC",
166 elf.R_AARCH64_MOVW_PREL_G2 => "R_AARCH64_MOVW_PREL_G2",
167 elf.R_AARCH64_MOVW_PREL_G2_NC => "R_AARCH64_MOVW_PREL_G2_NC",
168 elf.R_AARCH64_MOVW_PREL_G3 => "R_AARCH64_MOVW_PREL_G3",
169 elf.R_AARCH64_LDST128_ABS_LO12_NC => "R_AARCH64_LDST128_ABS_LO12_NC",
170 elf.R_AARCH64_MOVW_GOTOFF_G0 => "R_AARCH64_MOVW_GOTOFF_G0",
171 elf.R_AARCH64_MOVW_GOTOFF_G0_NC => "R_AARCH64_MOVW_GOTOFF_G0_NC",
172 elf.R_AARCH64_MOVW_GOTOFF_G1 => "R_AARCH64_MOVW_GOTOFF_G1",
173 elf.R_AARCH64_MOVW_GOTOFF_G1_NC => "R_AARCH64_MOVW_GOTOFF_G1_NC",
174 elf.R_AARCH64_MOVW_GOTOFF_G2 => "R_AARCH64_MOVW_GOTOFF_G2",
175 elf.R_AARCH64_MOVW_GOTOFF_G2_NC => "R_AARCH64_MOVW_GOTOFF_G2_NC",
176 elf.R_AARCH64_MOVW_GOTOFF_G3 => "R_AARCH64_MOVW_GOTOFF_G3",
177 elf.R_AARCH64_GOTREL64 => "R_AARCH64_GOTREL64",
178 elf.R_AARCH64_GOTREL32 => "R_AARCH64_GOTREL32",
179 elf.R_AARCH64_GOT_LD_PREL19 => "R_AARCH64_GOT_LD_PREL19",
180 elf.R_AARCH64_LD64_GOTOFF_LO15 => "R_AARCH64_LD64_GOTOFF_LO15",
181 elf.R_AARCH64_ADR_GOT_PAGE => "R_AARCH64_ADR_GOT_PAGE",
182 elf.R_AARCH64_LD64_GOT_LO12_NC => "R_AARCH64_LD64_GOT_LO12_NC",
183 elf.R_AARCH64_LD64_GOTPAGE_LO15 => "R_AARCH64_LD64_GOTPAGE_LO15",
184 elf.R_AARCH64_TLSGD_ADR_PREL21 => "R_AARCH64_TLSGD_ADR_PREL21",
185 elf.R_AARCH64_TLSGD_ADR_PAGE21 => "R_AARCH64_TLSGD_ADR_PAGE21",
186 elf.R_AARCH64_TLSGD_ADD_LO12_NC => "R_AARCH64_TLSGD_ADD_LO12_NC",
187 elf.R_AARCH64_TLSGD_MOVW_G1 => "R_AARCH64_TLSGD_MOVW_G1",
188 elf.R_AARCH64_TLSGD_MOVW_G0_NC => "R_AARCH64_TLSGD_MOVW_G0_NC",
189 elf.R_AARCH64_TLSLD_ADR_PREL21 => "R_AARCH64_TLSLD_ADR_PREL21",
190 elf.R_AARCH64_TLSLD_ADR_PAGE21 => "R_AARCH64_TLSLD_ADR_PAGE21",
191 elf.R_AARCH64_TLSLD_ADD_LO12_NC => "R_AARCH64_TLSLD_ADD_LO12_NC",
192 elf.R_AARCH64_TLSLD_MOVW_G1 => "R_AARCH64_TLSLD_MOVW_G1",
193 elf.R_AARCH64_TLSLD_MOVW_G0_NC => "R_AARCH64_TLSLD_MOVW_G0_NC",
194 elf.R_AARCH64_TLSLD_LD_PREL19 => "R_AARCH64_TLSLD_LD_PREL19",
195 elf.R_AARCH64_TLSLD_MOVW_DTPREL_G2 => "R_AARCH64_TLSLD_MOVW_DTPREL_G2",
196 elf.R_AARCH64_TLSLD_MOVW_DTPREL_G1 => "R_AARCH64_TLSLD_MOVW_DTPREL_G1",
197 elf.R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC => "R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC",
198 elf.R_AARCH64_TLSLD_MOVW_DTPREL_G0 => "R_AARCH64_TLSLD_MOVW_DTPREL_G0",
199 elf.R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC => "R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC",
200 elf.R_AARCH64_TLSLD_ADD_DTPREL_HI12 => "R_AARCH64_TLSLD_ADD_DTPREL_HI12",
201 elf.R_AARCH64_TLSLD_ADD_DTPREL_LO12 => "R_AARCH64_TLSLD_ADD_DTPREL_LO12",
202 elf.R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC => "R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC",
203 elf.R_AARCH64_TLSLD_LDST8_DTPREL_LO12 => "R_AARCH64_TLSLD_LDST8_DTPREL_LO12",
204 elf.R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC => "R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC",
205 elf.R_AARCH64_TLSLD_LDST16_DTPREL_LO12 => "R_AARCH64_TLSLD_LDST16_DTPREL_LO12",
206 elf.R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC => "R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC",
207 elf.R_AARCH64_TLSLD_LDST32_DTPREL_LO12 => "R_AARCH64_TLSLD_LDST32_DTPREL_LO12",
208 elf.R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC => "R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC",
209 elf.R_AARCH64_TLSLD_LDST64_DTPREL_LO12 => "R_AARCH64_TLSLD_LDST64_DTPREL_LO12",
210 elf.R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC => "R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC",
211 elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 => "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1",
212 elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC => "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC",
213 elf.R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 => "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21",
214 elf.R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC => "R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC",
215 elf.R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 => "R_AARCH64_TLSIE_LD_GOTTPREL_PREL19",
216 elf.R_AARCH64_TLSLE_MOVW_TPREL_G2 => "R_AARCH64_TLSLE_MOVW_TPREL_G2",
217 elf.R_AARCH64_TLSLE_MOVW_TPREL_G1 => "R_AARCH64_TLSLE_MOVW_TPREL_G1",
218 elf.R_AARCH64_TLSLE_MOVW_TPREL_G1_NC => "R_AARCH64_TLSLE_MOVW_TPREL_G1_NC",
219 elf.R_AARCH64_TLSLE_MOVW_TPREL_G0 => "R_AARCH64_TLSLE_MOVW_TPREL_G0",
220 elf.R_AARCH64_TLSLE_MOVW_TPREL_G0_NC => "R_AARCH64_TLSLE_MOVW_TPREL_G0_NC",
221 elf.R_AARCH64_TLSLE_ADD_TPREL_HI12 => "R_AARCH64_TLSLE_ADD_TPREL_HI12",
222 elf.R_AARCH64_TLSLE_ADD_TPREL_LO12 => "R_AARCH64_TLSLE_ADD_TPREL_LO12",
223 elf.R_AARCH64_TLSLE_ADD_TPREL_LO12_NC => "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC",
224 elf.R_AARCH64_TLSLE_LDST8_TPREL_LO12 => "R_AARCH64_TLSLE_LDST8_TPREL_LO12",
225 elf.R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC => "R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC",
226 elf.R_AARCH64_TLSLE_LDST16_TPREL_LO12 => "R_AARCH64_TLSLE_LDST16_TPREL_LO12",
227 elf.R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC => "R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC",
228 elf.R_AARCH64_TLSLE_LDST32_TPREL_LO12 => "R_AARCH64_TLSLE_LDST32_TPREL_LO12",
229 elf.R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC => "R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC",
230 elf.R_AARCH64_TLSLE_LDST64_TPREL_LO12 => "R_AARCH64_TLSLE_LDST64_TPREL_LO12",
231 elf.R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC => "R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC",
232 elf.R_AARCH64_TLSDESC_LD_PREL19 => "R_AARCH64_TLSDESC_LD_PREL19",
233 elf.R_AARCH64_TLSDESC_ADR_PREL21 => "R_AARCH64_TLSDESC_ADR_PREL21",
234 elf.R_AARCH64_TLSDESC_ADR_PAGE21 => "R_AARCH64_TLSDESC_ADR_PAGE21",
235 elf.R_AARCH64_TLSDESC_LD64_LO12 => "R_AARCH64_TLSDESC_LD64_LO12",
236 elf.R_AARCH64_TLSDESC_ADD_LO12 => "R_AARCH64_TLSDESC_ADD_LO12",
237 elf.R_AARCH64_TLSDESC_OFF_G1 => "R_AARCH64_TLSDESC_OFF_G1",
238 elf.R_AARCH64_TLSDESC_OFF_G0_NC => "R_AARCH64_TLSDESC_OFF_G0_NC",
239 elf.R_AARCH64_TLSDESC_LDR => "R_AARCH64_TLSDESC_LDR",
240 elf.R_AARCH64_TLSDESC_ADD => "R_AARCH64_TLSDESC_ADD",
241 elf.R_AARCH64_TLSDESC_CALL => "R_AARCH64_TLSDESC_CALL",
242 elf.R_AARCH64_TLSLE_LDST128_TPREL_LO12 => "R_AARCH64_TLSLE_LDST128_TPREL_LO12",
243 elf.R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC => "R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC",
244 elf.R_AARCH64_TLSLD_LDST128_DTPREL_LO12 => "R_AARCH64_TLSLD_LDST128_DTPREL_LO12",
245 elf.R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC => "R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC",
246 elf.R_AARCH64_COPY => "R_AARCH64_COPY",
247 elf.R_AARCH64_GLOB_DAT => "R_AARCH64_GLOB_DAT",
248 elf.R_AARCH64_JUMP_SLOT => "R_AARCH64_JUMP_SLOT",
249 elf.R_AARCH64_RELATIVE => "R_AARCH64_RELATIVE",
250 elf.R_AARCH64_TLS_DTPMOD => "R_AARCH64_TLS_DTPMOD",
251 elf.R_AARCH64_TLS_DTPREL => "R_AARCH64_TLS_DTPREL",
252 elf.R_AARCH64_TLS_TPREL => "R_AARCH64_TLS_TPREL",
253 elf.R_AARCH64_TLSDESC => "R_AARCH64_TLSDESC",
254 elf.R_AARCH64_IRELATIVE => "R_AARCH64_IRELATIVE",
255 else => "R_AARCH64_UNKNOWN",
256 },
257 else => unreachable,101 else => unreachable,
258 };102 };
259 try writer.print("{s}", .{str});103 try writer.print("{s}", .{str});