aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineFunction.cpp
diff options
context:
space:
mode:
authorStefan Gränitz <stefan.graenitz@gmail.com>2023-03-23 11:10:39 +0100
committerStefan Gränitz <stefan.graenitz@gmail.com>2023-03-23 11:25:45 +0100
commitc2de8ff92753acdb1ace7a27cc11cb09f28eb8fa (patch)
tree4c3af5ce764ff1a16f97d6cb17915b1d343759c6 /llvm/lib/CodeGen/MachineFunction.cpp
parentd25751779baa37356265b004edc7e55ee4a4c383 (diff)
downloadllvm-c2de8ff92753acdb1ace7a27cc11cb09f28eb8fa.zip
llvm-c2de8ff92753acdb1ace7a27cc11cb09f28eb8fa.tar.gz
llvm-c2de8ff92753acdb1ace7a27cc11cb09f28eb8fa.tar.bz2
[JITLink] Initial AArch32 backend
This first version lays the foundations for AArch32 support in JITLink. ELFLinkGraphBuilder_aarch32 processes REL-type relocations and populates LinkGraphs from ELF object files for both big- and little-endian systems. The ArmCfg member controls subarchitecture-specific details throughout the linking process (i.e. it's passed to ELFJITLinker_aarch32). Relocation types follow the ABI documentation's division into classes: Data (endian-sensitive), Arm (32-bit little-endian) and Thumb (2x 16-bit little-endian, "Thumb32" in the docs). The implementation of instruction encoding/decoding for relocation resolution is implemented symmetrically and is testable in isolation (see AArch32 category in JITLinkTests). Callable Thumb functions are marked with a ThumbSymbol target-flag and stored in the LinkGraph with their real addresses. The thumb-bit is added back in when the owning JITDylib requests the address for such a symbol. The StubsManager can generate (absolute) Thumb-state stubs for branch range extensions on v7+ targets. Proper GOT/PLT handling is not yet implemented. This patch is based on the backend implementation in ez-clang and has just enough functionality to model the infrastructure and link a Thumb function `main()` that calls `printf()` to dump "Hello Arm!" on Armv7a. It was tested on Raspberry Pi with 32-bit Raspbian OS. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D144083
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunction.cpp')
0 files changed, 0 insertions, 0 deletions