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.
LLVM Linker (lld)
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
Benchmarking
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.