authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-11 12:11:58+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-11 12:38:21+02:00
log5b8722491baf371f2154d19e71f2fd36e8e7f302
tree48f34a9a9d872bfdd4c56cdc3d59e52e1fdcc5dd
parentbefbeeaa4b61c754b35dfb0e6c3cecff7e8b855d
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Elf2: sort some sparc relocations


1 files changed, 20 insertions(+), 10 deletions(-)

src/link/Elf2.zig+20-10
...@@ -9009,11 +9009,6 @@ fn addRelocAssumeCapacity(...@@ -9009,11 +9009,6 @@ fn addRelocAssumeCapacity(
9009 .WDISP22,9009 .WDISP22,
9010 .HI22,9010 .HI22,
9011 .LO10,9011 .LO10,
9012 .HIPLT22,
9013 .LOPLT10,
9014 .PCPLT22,
9015 .PCPLT10,
9016 .OLO10,
9017 .HH22,9012 .HH22,
9018 .HM10,9013 .HM10,
9019 .LM22,9014 .LM22,
...@@ -9024,14 +9019,29 @@ fn addRelocAssumeCapacity(...@@ -9024,14 +9019,29 @@ fn addRelocAssumeCapacity(
9024 .WDISP19,9019 .WDISP19,
9025 .HIX22,9020 .HIX22,
9026 .LOX10,9021 .LOX10,
9027 .REGISTER,
9028 .H34,9022 .H34,
9029 .WDISP10,9023 .WDISP10,
9030 => return error.UnimplementedRelocation,9024 => return error.UnimplementedRelocation,
90319025
9026 // Nobody seems to support these.
9027 .HIPLT22,
9028 .LOPLT10,
9029 .PCPLT22,
9030 .PCPLT10,
9031 => return error.UnimplementedRelocation,
9032
9033 // Needs to use the second addend in `ELF64_R_TYPE_DATA(reloc.r_info)` which we currently can't model.
9034 .OLO10 => return error.UnimplementedRelocation,
9035
9036 // Does not patch any bytes. Together with `STT_SPARC_REGISTER`, this is used to indicate that an object
9037 // file owns a global register and what value it should be initialized to. I don't think this sees any
9038 // real-world use.
9039 .REGISTER => return error.UnimplementedRelocation,
9040
9032 // These need similar handling to `R_X86_64_GOTOFF64`. No compiler seems to emit them though.9041 // These need similar handling to `R_X86_64_GOTOFF64`. No compiler seems to emit them though.
9033 .GOTDATA_HIX22 => return error.UnimplementedRelocation,9042 .GOTDATA_HIX22,
9034 .GOTDATA_LOX10 => return error.UnimplementedRelocation,9043 .GOTDATA_LOX10,
9044 => return error.UnimplementedRelocation,
90359045
9036 // These relocations signal that certain relaxations are legal, but this linker does9046 // These relocations signal that certain relaxations are legal, but this linker does
9037 // not yet implement relaxation, so these are ignored.9047 // not yet implement relaxation, so these are ignored.
...@@ -9063,8 +9073,8 @@ fn addRelocAssumeCapacity(...@@ -9063,8 +9073,8 @@ fn addRelocAssumeCapacity(
9063 .DISP32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.rel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),9073 .DISP32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.rel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),
9064 .DISP64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.rel, .{ .dest = .@"64", .cast = .signed, .shift = .@"0" })),9074 .DISP64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.rel, .{ .dest = .@"64", .cast = .signed, .shift = .@"0" })),
90659075
9066 .SIZE32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),9076 .SIZE32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),
9067 .SIZE64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"64", .cast = .unsigned, .shift = .@"0" })),9077 .SIZE64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"64", .cast = .unsigned, .shift = .@"0" })),
90689078
9069 .PCPLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltrel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),9079 .PCPLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltrel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),
9070 .PLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltabs, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),9080 .PLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltabs, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),