我正在将内核地址清理程序(KASan)从 linux 移植到另一个操作系统(我们称之为操作系统)。该操作系统使用工具链编译,arm-none-eabi
我将以下与 asan 相关的标志传递给编译器:
-fsanitize=kernel-address --param asan-globals=1 --param asan-stack=1 --param asan-instrumentation-with-call-threshold=0
我还实现了不同的__asan_*
功能,包括__asan_register_globals
和__asan_unregister_globals
。
我的问题是编译器只插入__asan_load*
,__asan_store*
和__asan_handle_no_return
函数并忽略全局变量和堆栈。
我进行了调查,发现在 Linux 编译器中插入了全局和堆栈的检测,但 Linux 使用arm-linux-gnueabi
工具链。
任何人都可以解释为什么--param asan-globals=1
并且--param asan-stack=1
不影响使用arm-none-eabi
工具链生成的代码吗?或者只是为进一步搜索设定方向。
谢谢。