<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><font face="Menlo" size="2" class="">Hi,</font><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class="">I am instrumenting load and store and passing memory address to the instrumented function like below - </font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class=""> <span class="Apple-tab-span" style="white-space:pre">  </span>Type* void_ptr_ty = PointerType::getUnqual(Type::getInt8Ty(M.getContext()));</font></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""> <span class="Apple-tab-span" style="white-space:pre">    </span>RecordMem</span><span style="font-variant-ligatures: no-common-ligatures" class=""> = M.getOrInsertFunction(</span><span style="font-variant-ligatures: no-common-ligatures; color: #c33720" class="">"RecordMem"</span><span style="font-variant-ligatures: no-common-ligatures" class="">, VoidTy, size_ty, void_ptr_ty);</span></font></div></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""> <span class="Apple-tab-span" style="white-space:pre">      </span></span><span style="font-variant-ligatures: no-common-ligatures; color: #34bc26" class="">bool</span><span style="font-variant-ligatures: no-common-ligatures" class=""> IsWrite = isa<StoreInst>(*I);</span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">  <span class="Apple-tab-span" style="white-space:pre">     </span>Value *</span><span style="font-variant-ligatures: no-common-ligatures;" class="">Addr</span><span style="font-variant-ligatures: no-common-ligatures" class=""> = IsWrite</span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class="">      <span class="Apple-tab-span" style="white-space:pre">                </span>? cast<StoreInst>(I)->getPointerOperand()</font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class="">      <span class="Apple-tab-span" style="white-space:pre">                </span>: cast<LoadInst>(I)->getPointerOperand();</font></span></div></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class=""><br class=""></font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""> <span class="Apple-tab-span" style="white-space:pre">    </span>BitCastInst* bitcast = </span><span style="font-variant-ligatures: no-common-ligatures; color: #cd7923" class="">new</span><span style="font-variant-ligatures: no-common-ligatures" class=""> BitCastInst(</span><span style="font-variant-ligatures: no-common-ligatures;" class="">Addr</span><span style="font-variant-ligatures: no-common-ligatures" class="">,</span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class="">           PointerType::getUnqual(Type::getInt8Ty(M.getContext())),</font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">             </span><span style="font-variant-ligatures: no-common-ligatures; color: #c33720" class="">""</span><span style="font-variant-ligatures: no-common-ligatures" class="">, I); </span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class=""> </font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class="">  <span class="Apple-tab-span" style="white-space:pre">   </span>ArgsV.push_back(bitcast);</font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class=""> </font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class="">  <span class="Apple-tab-span" style="white-space:pre">    </span>IRB.CreateCall(RecordMem, ArgsV);</font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" size="2" class=""><br class=""></font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">and in function </span>RecordMem, I am type casting void Addr to size_t - </font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class=""><font face="Menlo" size="2" class=""><br class=""></font></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>extern</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: rgb(195, 55, 32);" class="">"C"</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class="">void</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> RecordMem(THREADID threadid, </span><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class="">void</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> * addr) {</span></font></div><p style="margin: 0px; font-stretch: normal; line-height: normal; min-height: 21px;" class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">  <span class="Apple-tab-span" style="white-space:pre">           </span>size_t</span> addr_addr = (size_t)addr;</font></p><div class=""><font face="Menlo" size="2" class=""><span class="Apple-tab-span" style="white-space:pre">            </span>…</font></div><div class=""><font face="Menlo" size="2" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class="">I don’t want to type cast to size_t in RecordMem. I want to pass it as size_t from llvm pass.</font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class="">My RecordMem interface now is - </font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class=""><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class=""><span class="Apple-tab-span" style="white-space:pre">         </span>extern</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: rgb(195, 55, 32);" class="">"C"</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: rgb(52, 188, 38);" class="">void</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> RecordMem(THREADID threadid, <font color="#34bc26" class=""><span style="caret-color: rgb(52, 188, 38);" class="">size_t</span></font></span><span style="font-variant-ligatures: no-common-ligatures;" class=""> addr) {}</span></font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class="">How can I achieve this? How can I pass the address as size_t?</font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><font face="Menlo" size="2" class=""><br class=""></font></div><div class=""><br class=""></div></span></div></span></div></body></html>