[PATCH] D71509: [ELF][PPC64] Implement IPLT code sequence for non-preemptible IFUNC
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 17 13:08:54 PST 2019
MaskRay updated this revision to Diff 234376.
MaskRay edited the summary of this revision.
MaskRay added a comment.
Delete std r2, 24(r1) from the IPLT code sequence. If my understanding of sfertile's example is correct,
we have to accept some loss of functionality, either we can't use ifunc tail call, or we can't support non-preemptable ifunc resolving to a function in a different module.
It seems that we can sacrifice the latter because https://sourceware.org/glibc/wiki/GNU_IFUNC says:
Requirement (a): Resolver must be defined in the same translation unit as the implementations.
Making it work is an extension (I believe it works on EM_386, EM_X86_64, EM_ARM, and EM_AARCH64). Unforunately we have to add the restriction for EM_PPC64.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71509/new/
https://reviews.llvm.org/D71509
Files:
lld/ELF/Arch/PPC64.cpp
lld/ELF/Thunks.cpp
lld/ELF/Thunks.h
lld/test/ELF/ppc64-ifunc.s
lld/test/ELF/ppc64-toc-relax-ifunc.s
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71509.234376.patch
Type: text/x-patch
Size: 9128 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191217/3522fed0/attachment.bin>
More information about the llvm-commits
mailing list