authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-11 12:05:19+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-11 12:05:19+02:00
log7221fd06b9af52fe55a49550385d9b865261e032
treecc89336912dc9012b84be9c0acf2051529f8cf49
parent649a27194e7f2dbeacf0bba81dee24efd2326221
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Elf2: support R_SPARC_TLS_IE_HI22 and R_SPARC_TLS_IE_LO10


1 files changed, 5 insertions(+), 2 deletions(-)

src/link/Elf2.zig+5-2
......@@ -9023,8 +9023,6 @@ fn addRelocAssumeCapacity(
90239023 .HIX22,
90249024 .LOX10,
90259025 .REGISTER,
9026 .TLS_IE_HI22,
9027 .TLS_IE_LO10,
90289026 .TLS_DTPMOD32,
90299027 .TLS_DTPMOD64,
90309028 .H34,
......@@ -9088,6 +9086,7 @@ fn addRelocAssumeCapacity(
90889086 .GOTDATA_OP_HIX22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .symbol = target }, addend, .special(.sparc_op_hix22)),
90899087 .TLS_GD_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .tlsgd0 = target }, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),
90909088 .TLS_LDM_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .tlsld0, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),
9089 .TLS_IE_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .tpoff = target }, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),
90919090 // zig fmt: on
90929091
90939092 .TLS_GD_CALL, .TLS_LDM_CALL => {
......@@ -9133,6 +9132,10 @@ fn addRelocAssumeCapacity(
91339132 try elf.one_shot_fixups.append(elf.base.comp.gpa, .{ .node = node, .offset = offset, .action = .@"32[12:10] = 0b000" });
91349133 elf.addGotRelocAssumeCapacity(node, offset, .tlsld0, addend, .simple(.offset, .{ .dest = .@"32[9:0]", .cast = .trunc, .shift = .@"0" }));
91359134 },
9135 .TLS_IE_LO10 => {
9136 try elf.one_shot_fixups.append(elf.base.comp.gpa, .{ .node = node, .offset = offset, .action = .@"32[12:10] = 0b000" });
9137 elf.addGotRelocAssumeCapacity(node, offset, .{ .tpoff = target }, addend, .simple(.offset, .{ .dest = .@"32[9:0]", .cast = .trunc, .shift = .@"0" }));
9138 },
91369139 },
91379140 .X86_64 => rel_type: switch (@"type".X86_64) {
91389141 .NONE => {},