私は現在、いくつかのシステムコールと、、、などの低レベル関数の使用状況を追跡する必要があるプロジェクトに取り組んでmmapいbrkますsbrk。mmapこれまで、関数の介在を使用してこれを行ってきました。たとえば、置き換える関数と同じ名前のラッパー関数を記述し、LD_PRELOAD環境変数を設定してプログラムにロードします。でロードするポインターを介して実際の関数を呼び出しますdlsym。
残念ながら、ラップしたい関数の1つである、sbrkは、によって内部的に使用されdlsymているため、シンボルをロードしようとするとプログラムがクラッシュします。sbrkLinuxではシステムコールではないので、単にsyscall間接的に呼び出すために使用することはできません。
だから私の質問は、使用せずに同じ名前のラッパー関数からライブラリ関数を呼び出すにはどうすればよいdlsymですか?元の関数を参照できるコンパイラのトリック(gccを使用)はありますか?