llvm-project
371e0e20 - [ELF] Add target-specific relocation scanning for AArch64 (#181099)

Commit
71 days ago
[ELF] Add target-specific relocation scanning for AArch64 (#181099) Implement AArch64::scanSectionImpl, following the pattern established for x86 (#178846), PPC64 (#181496), and SystemZ (#181563). 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, and handleTlsIe/handleTlsDesc for TLS IE/TLSDESC. - Remove some AArch64-specific RelExpr members (RE_AARCH64_AUTH_GOT, RE_AARCH64_AUTH_GOT_PC, RE_AARCH64_AUTH_GOT_PAGE_PC, RE_AARCH64_AUTH_TLSDESC_PAGE, RE_AARCH64_AUTH_TLSDESC, RE_AARCH64_RELAX_TLS_GD_TO_IE_PAGE_PC) by using regular RelExpr members with flag-based dispatch (NEEDS_GOT_AUTH, NEEDS_TLSDESC_AUTH). AUTH GOT relocations now call `sym.setFlags(NEEDS_GOT | NEEDS_GOT_AUTH)` and `rs.processAux` directly. - Remove adjustTlsExpr and handleAArch64PAuthTlsRelocation by inlining their logic into scanSectionImpl and relocateAlloc. - Simplify getRelExpr to only handle relocations needed by relocateNonAlloc and EhInputSection::preprocessRelocs.
Author
Parents
Loading