main()
関数を外部に公開するだけの LLVM libFuzzer を使用して、特定のコードをファジングしようとしています。ターゲット コードのソースにアクセスできますが、変更できません。
オブジェクト ファイルを直接インクルードしようとすると、main
によって提供される定義と競合します-fsanitize=fuzzer
。main
オブジェクト ファイル内のシンボルの名前を変更することで、これを解決できるかもしれないと考えました。
objcopy --redefine-sym main=stub_main main.stub main.o
次に、ハーネス コードで次のように宣言します。
extern int stub_main(int argc, char **argv)
そして、リンク行に含めながら、stub_main()
の代わりに呼び出します。ただし、これは機能していないようで、リンカーは への参照を見つけることができません。main()
main.stub
stub_main(int, char**)
main
独自の を提供する別のコードからこの関数を呼び出すにはどうすればよいmain()
ですか?