Hi All, I am using code similar to giri instrumentation <https://github.com/liuml07/giri> framework to insert my instrumentation code. It works for normal functions for example to insert recordInt32 function below. void recordInt32(int32_t val){ printf("%d, ", val); } I can get recodedInt32 function in my Module using getOrInsert Function. Function* RecordInt32 = cast<Function>(M.getOrInsertFunction("recordInt32", VoidType, Int32Type, NULL)); and insert at desired instPoint using: CallInst::Create(RecordInt32, args, "", instPoint); What should be the similar instructions for recoedVarInsputValues below: void recordVarInputValues(int num, ...){ CODE } I am not able to figure out what will be the argument to getOrInsertFunction for "...". Thanks! Manish -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140831/51e5780b/attachment.html>
Dear Manish, For a varargs function, I think you'll need to use the version of Module::getOrInsertFunction() that takes a FunctionType. That FunctionType, in turn, can be created so that is has a vararg type (see http://llvm.org/doxygen/classllvm_1_1FunctionType.html#ab781285a21baf484d3023a63da798fc7). Regards, John Criswell On 8/31/14, 4:29 PM, Manish Gupta wrote:> Hi All, > > I am using code similar to giri instrumentation > <https://github.com/liuml07/giri> framework to insert my > instrumentation code. It works for normal functions for example to > insert recordInt32 function below. > > void recordInt32(int32_t val){ > printf("%d, ", val); > } > > I can get recodedInt32 function in my Module using getOrInsert Function. > > Function* RecordInt32 = > cast<Function>(M.getOrInsertFunction("recordInt32", > VoidType, > Int32Type, > NULL)); > > and insert at desired instPoint using: > > CallInst::Create(RecordInt32, args, "", instPoint); > > What should be the similar instructions for recoedVarInsputValues below: > > void recordVarInputValues(int num, ...){ CODE } > > I am not able to figure out what will be the argument to > getOrInsertFunction for "...". > > Thanks! > Manish > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140831/fa717da6/attachment.html>
Thanks! --------- FunctionType *FuncTy = FunctionType::get(VoidType, args, true); RecordVarArgs cast<Function>(M.getOrInsertFunction("recordVarInputValues", FuncTy)); On Sun, Aug 31, 2014 at 2:09 PM, John Criswell <criswell at illinois.edu> wrote:> Dear Manish, > > For a varargs function, I think you'll need to use the version of > Module::getOrInsertFunction() that takes a FunctionType. That > FunctionType, in turn, can be created so that is has a vararg type (see > http://llvm.org/doxygen/classllvm_1_1FunctionType.html#ab781285a21baf484d3023a63da798fc7 > ). > > Regards, > > John Criswell > > > On 8/31/14, 4:29 PM, Manish Gupta wrote: > > Hi All, > > I am using code similar to giri instrumentation > <https://github.com/liuml07/giri> framework to insert my instrumentation > code. It works for normal functions for example to insert recordInt32 > function below. > > void recordInt32(int32_t val){ > printf("%d, ", val); > } > > I can get recodedInt32 function in my Module using getOrInsert > Function. > > Function* RecordInt32 > cast<Function>(M.getOrInsertFunction("recordInt32", > VoidType, > Int32Type, > NULL)); > > and insert at desired instPoint using: > > CallInst::Create(RecordInt32, args, "", instPoint); > > What should be the similar instructions for recoedVarInsputValues below: > > void recordVarInputValues(int num, ...){ CODE } > > I am not able to figure out what will be the argument to > getOrInsertFunction for "...". > > Thanks! > Manish > > > _______________________________________________ > LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140831/7727df11/attachment.html>