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(...@@ -9023,8 +9023,6 @@ fn addRelocAssumeCapacity(
9023 .HIX22,9023 .HIX22,
9024 .LOX10,9024 .LOX10,
9025 .REGISTER,9025 .REGISTER,
9026 .TLS_IE_HI22,
9027 .TLS_IE_LO10,
9028 .TLS_DTPMOD32,9026 .TLS_DTPMOD32,
9029 .TLS_DTPMOD64,9027 .TLS_DTPMOD64,
9030 .H34,9028 .H34,
...@@ -9088,6 +9086,7 @@ fn addRelocAssumeCapacity(...@@ -9088,6 +9086,7 @@ fn addRelocAssumeCapacity(
9088 .GOTDATA_OP_HIX22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .symbol = target }, addend, .special(.sparc_op_hix22)),9086 .GOTDATA_OP_HIX22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .symbol = target }, addend, .special(.sparc_op_hix22)),
9089 .TLS_GD_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .tlsgd0 = target }, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),9087 .TLS_GD_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .{ .tlsgd0 = target }, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),
9090 .TLS_LDM_HI22 => elf.addGotRelocAssumeCapacity(node, offset, .tlsld0, addend, .simple(.offset, .{ .dest = .@"32[21:0]", .cast = .trunc, .shift = .@"10" })),9088 .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" })),
9091 // zig fmt: on9090 // zig fmt: on
90929091
9093 .TLS_GD_CALL, .TLS_LDM_CALL => {9092 .TLS_GD_CALL, .TLS_LDM_CALL => {
...@@ -9133,6 +9132,10 @@ fn addRelocAssumeCapacity(...@@ -9133,6 +9132,10 @@ fn addRelocAssumeCapacity(
9133 try elf.one_shot_fixups.append(elf.base.comp.gpa, .{ .node = node, .offset = offset, .action = .@"32[12:10] = 0b000" });9132 try elf.one_shot_fixups.append(elf.base.comp.gpa, .{ .node = node, .offset = offset, .action = .@"32[12:10] = 0b000" });
9134 elf.addGotRelocAssumeCapacity(node, offset, .tlsld0, addend, .simple(.offset, .{ .dest = .@"32[9:0]", .cast = .trunc, .shift = .@"0" }));9133 elf.addGotRelocAssumeCapacity(node, offset, .tlsld0, addend, .simple(.offset, .{ .dest = .@"32[9:0]", .cast = .trunc, .shift = .@"0" }));
9135 },9134 },
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 },
9136 },9139 },
9137 .X86_64 => rel_type: switch (@"type".X86_64) {9140 .X86_64 => rel_type: switch (@"type".X86_64) {
9138 .NONE => {},9141 .NONE => {},