malloc を呼び出す単純なプログラムがあり、メインの実行可能ファイルから malloc へのこの直接呼び出しをキャッチする pintool を開発しようとしています。
SimpleExamples の malloctrace.cpp を使用する (SDK に付属):
VOID Image(IMG img, VOID *v)
{
RTN mallocRtn = RTN_FindByName(img, MALLOC);
if (RTN_Valid(mallocRtn))
{
RTN_Open(mallocRtn);
RTN_InsertCall(mallocRtn, IPOINT_BEFORE,(AFUNPTR)Arg1Before, IARG_ADDRINT, MALLOC, IARG_G_ARG0_CALLEE, IARG_END);
RTN_Close(mallocRtn);
}
}
私は、自分のコードまたはそれが使用するライブラリによって指向された、多くの malloc 呼び出しをキャッチしています。
objdump を使用すると、malloc の呼び出しが表示されます。
callq 4003b8 <malloc@plt>
これは malloc@plt で始まります。メインの実行可能ファイルのルーチンをブラウズすると、.plt ルーチンが表示されますが、それが malloc に属しているのか、他の外部関数に属しているのかわかりません。
よろしくお願いします。