[llvm-dev] Inserting a function with arguments to appendToGlobalCtors

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Mon Dec 21 17:40:44 PST 2020


You probably need to create a function that takes no arguments - and have
that function then create the arguments and call the
functions-taking-arguments you want to run as global ctors. Add the outer
no-argument-taking-function to the global ctors list.

On Mon, Dec 21, 2020 at 5:28 PM Mohannad Ismail via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> I want to insert a function call that executes first. I figured the way to
> do this is to insert to the global constructors with appendToGlobalCtors()
> in this way:
>
> LLVMContext &C = M.getContext();
> Function* FInit = Function::Create(FunctionType::get(Type::getVoidTy(C), false), GlobalValue::ExternalLinkage, INITMEMORY, &M);
> appendToGlobalCtors(M, FInit, 0);
>
> This works well if the function has no arguments. But what if the function
> I need to insert has arguments that I would like to specify? How do I
> create the function to insert into the global constructors? The function I
> have returns void. I already know how to use the IRBuilder to create a
> function call. But the builder takes the arguments in the
> builder.CreateCall(Func, FuncArgs). In general, I need to execute a bunch
> of function calls first when I am able to obtain their parameters in the
> program.
>
> Hope I was clear enough. Let me know if this needs more clarification.
> Thanks!
>
>
> Best regards,
>
> Mohannad Ismail
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201221/6dfe72a9/attachment.html>


More information about the llvm-dev mailing list