[PATCH] D128601: [ORC][ORC_RT][AArch64] Implement TLS descriptor in ELFNixPlatform.
Lang Hames via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 4 18:46:31 PDT 2022
lhames added a comment.
Amazing -- TLV was supposed to be a stretch goal. ;)
================
Comment at: compiler-rt/lib/orc/elfnix_tls.aarch64.S:20
+
+ // returns address of TLV in x0, all other registers preserved
+ .globl ___orc_rt_elfnix_tlsdesc_resolver
----------------
Could this re-entry code have a fast-path for instances once they've been allocated (as in https://github.com/llvm/llvm-project/issues/51162, though obviously the specifics would be different for TLSDESC). If so it's probably worth a comment here "// TODO: add fast-path for repeat access".
================
Comment at: llvm/include/llvm/ExecutionEngine/JITLink/aarch64.h:25
enum EdgeKind_aarch64 : Edge::Kind {
- Branch26 = Edge::FirstRelocation,
+ Nop = Edge::FirstRelocation,
+ Branch26,
----------------
Is `Nop` actually needed here, or could we just not introduce the edge?
================
Comment at: llvm/include/llvm/ExecutionEngine/JITLink/aarch64.h:34-35
GOTPageOffset12,
- TLVPage21,
- TLVPageOffset12,
PointerToGOT,
----------------
I think that these (`TLVPage21` and `TLVPageOffset12`) should stay in: The idea is to have the edge kinds in the initially parsed graph be very descriptive (e.g. "I am a page21-expr offset _to a TLV pointer_") so that early passes have a clear picture of what the graph represents.
================
Comment at: llvm/include/llvm/ExecutionEngine/JITLink/aarch64.h:226-228
+ case Nop: {
+ break;
+ }
----------------
Braces aren't needed here, since no new decls are introduced.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128601/new/
https://reviews.llvm.org/D128601
More information about the llvm-commits
mailing list