<div dir="ltr"><div>Hi everyone, </div><div><br></div><div>I have some trouble in instrumenting load instructions. I want to instrument load instructions as follow: Firstly, I judge whether the loaded pointer(<b>any type is possible</b>) is NULL. If so, I want to explicitly allocate the corresponding address space of its type to the pointer. </div>

<div><br></div><div>For example, in source code level I want to translate the next statement  </div><div><br></div><div>*p = 1;  </div><div><br></div><div>into the next statements</div><div><br></div><div>if (p == NULL) </div>

<div>    *p = malloc(sizeof(*p));</div><div>*p = 1;</div><div><br></div><div>For simplicity, I want to wrapper the first two statements into function init. And then I can implement as follow:</div><div><br></div><div>init((void*)p, sizeof(*p));</div>

<div>*p = 1;</div><div><br></div><div>where</div><div><br></div><div>void init(void *p, int size) {</div><div>     if (p == NULL)</div><div>         p = malloc(size);</div><div>}</div><br clear="all"><div>I am trying to use the next pass for instrumentation:</div>

<div><br></div><div>for (Module::iterator f=M.begin(), fe=M.end(); f!=fe; ++f) {</div><div>   for (Function::iterator b=f->begin(), be=f->end(); b!=be; ++b) {</div><div>      for (BasicBlock::iterator i=b->begin(), ie=b->end()l i!=ie; ++i)  {</div>

<div>          if (i->getOpcode() == Instruction::Load) {</div><div>             </div><div><b>             CallInst::create(....); // add a call inst before inst i to invoke function init</b></div><div><br></div><div>

<br></div><div>          }</div><div>      }</div><div>   }</div><div>}</div><div><br></div><div>So my question is How should I create the previous call inst to execute invocation: init((void*)p, sizeof(p)). Because any pointer type is possible, so I let the first parameter of function init as 'void*'. Furthermore, how should I get the size of *p? I check Type.h, and found class Type only provide function getPrimitiveSizeInBits() to return the size of the primitive types. How can I know the size of other types, eg. the size of a structure type.</div>

<div><p>Any Suggestions are welcome. Thank you all in advance.  </p><p>Best Regards!</p></div><div><br>--------------------------------------------<br>Qiuping Yi<br>Institute Of Software<br>Chinese Academy of Sciences</div>


</div>