llvm-project
aec1c984 - [ELF] Add target-specific relocation scanning for SystemZ (#181563)

Commit
67 days ago
[ELF] Add target-specific relocation scanning for SystemZ (#181563) Implement SystemZ::scanSectionImpl, following the pattern established for x86 (#178846) and PPC64 (#181496). This merges the getRelExpr and TLS handling for SHF_ALLOC sections into the target-specific scanner, enabling devirtualization and eliminating abstraction overhead. - Inline relocation classification into scanSectionImpl with a switch on relocation type, replacing the generic `rs.scan()` path. - Use processR_PC/processR_PLT_PC for common PC-relative and PLT relocations. - Handle TLS GD, LD, and DTPREL directly, eliminating handleTlsRelocation, getTlsGdRelaxSkip, and adjustTlsExpr overrides. Replace R_RELAX_TLS_GD_TO_IE_GOT_OFF with R_GOT_OFF and R_RELAX_TLS_GD_TO_LE/R_RELAX_TLS_LD_TO_LE with R_TPREL, using type-based dispatch in relocate() for marker relocation types. - Handle TLS IE inline without IE-to-LE optimization. Cannot use `handleTlsIe`. - Remove `sortRels`: instead of sorting relocations to process GDCALL before PLT32DBL, skip PLT32DBL by peeking ahead at the next relocation to check for a TLS marker (GDCALL/LDCALL). This fixes SHT_CREL as an alternative to #149640 - Simplify getRelExpr to only handle relocations needed by relocateNonAlloc and .eh_frame. Fix #149511
Author
Parents
Loading