[llvm-dev] [RFC][LLVM] New Constant type for representing function PLT entries
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Thu Aug 20 11:53:20 PDT 2020
Hi, Leonard,
What are the motivating use cases?
-Hal
On 8/20/20 1:29 PM, Leonard Chan via llvm-dev wrote:
>
> Hi all,
>
>
> We would like to propose a new Constant type in LLVM for representing
> entries in the Procedure Linkage Table (PLT).
>
>
> The PLT is a data structure used for dispatching position-independent
> function calls to appropriate functions where the address of the
> function is not known statically. Right now, if a call is made to a
> function, it may be lowered to a direct call to the function itself or
> the PLT entry for that function. LLVM has checks that dictate if the
> function call should be a direct reference or PLT entry, but we don’t
> have a way in IR to semantically represent that the PLT entry should
> be used.
>
>
> The proposed constant would be analogous to BlockAddress, but instead
> represent the PLT entry for functions. The usage could look something
> like:
>
>
> pltentry(@function)
>
>
> and would always have the same type as the function. A pltentrywould
> operate exactly like a function, but the main difference is that it’s
> lowered to the PLT entry (function at plt) on targets that support PLT
> relocations. The linker can then decide if it should be relaxed into a
> direct reference or remain a PLT entry.
>
>
> I have a very rough WIP implementation at
> https://reviews.llvm.org/D77248 <https://reviews.llvm.org/D77248>.
>
>
> Thoughts and opinions?
>
>
> Thanks,
>
> Leonard
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200820/2eea1c47/attachment.html>
More information about the llvm-dev
mailing list