前回フックについて調べた勢いで、gccで VisualStudio の /Gh,/GHオプション(_penter,_pexit)と同様のことを行うにはどうすればよいかを調べてみました。
調べてみると gcc にも同様の機能を実現するためのオプションを発見しました。
”instrument-functions”というものです。ただフックの関数名はちょっと違うようで、 _cyg_profile_func_enter, _cyg_profile_func_exit となるようです。またこの関数のシグニチャは以下のようになっています。
void __cyg_profile_func_enter(void* func_addr, void* call_site); void __cyg_profile_func_exit(void* func_addr, void* call_site);
便利なことに引数で呼び出し元関数のアドレスが入ってくるようです!