[ELF] Add target-specific relocation scanning for LoongArch (#182236) Implement LoongArch::scanSectionImpl, following the pattern established for x86, PPC64, SystemZ, AArch64. 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. - Inline TLS handling: IE->LE optimization for _PC_ variants only (not _PCADD_ or absolute), TLSDESC->IE/LE for non-extreme code model, GD/LD flag setting without going through generic handleTlsRelocation. - Remove adjustTlsExpr by inlining its logic into scanSectionImpl. - Remove LoongArch-specific code from Relocations.cpp: handleTlsRelocation, execOptimizeInLoongArch, and the sort condition. - Simplify getRelExpr to only handle relocations needed by relocateNonAlloc, scanEhSection, and the extreme code model fallback in relocateAlloc. GitOrigin-RevId: cd01e6526af6dbe2653d9a9e5589afe97b03b914
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.
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.