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-12 10:31:29+02:00
log776beb793701ead66a0f6e765090931324ce1580
tree787373636daaf400cf6d600ba89bbdaf3dd9d5ec
parentae5e4efaceaa2a79e829e8d4c222355d184321cb
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(
90099009 .WDISP22,
90109010 .HI22,
90119011 .LO10,
9012 .HIPLT22,
9013 .LOPLT10,
9014 .PCPLT22,
9015 .PCPLT10,
9016 .OLO10,
90179012 .HH22,
90189013 .HM10,
90199014 .LM22,
......@@ -9024,14 +9019,29 @@ fn addRelocAssumeCapacity(
90249019 .WDISP19,
90259020 .HIX22,
90269021 .LOX10,
9027 .REGISTER,
90289022 .H34,
90299023 .WDISP10,
90309024 => 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
90329041 // These need similar handling to `R_X86_64_GOTOFF64`. No compiler seems to emit them though.
9033 .GOTDATA_HIX22 => return error.UnimplementedRelocation,
9034 .GOTDATA_LOX10 => return error.UnimplementedRelocation,
9042 .GOTDATA_HIX22,
9043 .GOTDATA_LOX10,
9044 => return error.UnimplementedRelocation,
90359045
90369046 // These relocations signal that certain relaxations are legal, but this linker does
90379047 // not yet implement relaxation, so these are ignored.
......@@ -9063,8 +9073,8 @@ fn addRelocAssumeCapacity(
90639073 .DISP32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.rel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),
90649074 .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" })),
9067 .SIZE64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"64", .cast = .unsigned, .shift = .@"0" })),
9076 .SIZE32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),
9077 .SIZE64 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.size, .{ .dest = .@"64", .cast = .unsigned, .shift = .@"0" })),
90689078
90699079 .PCPLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltrel, .{ .dest = .@"32", .cast = .signed, .shift = .@"0" })),
90709080 .PLT32 => try elf.addSymbolRelocAssumeCapacity(node, offset, target, addend, .simple(.pltabs, .{ .dest = .@"32", .cast = .unsigned, .shift = .@"0" })),