如果将 ASAN 运行时加载为第二个库可以吗?

Is it okay if ASAN runtime loaded as second library?

我想将 ASAN 用于系统上的进程。系统需要先加载另一个库 libfoo。 libfoo 不拦截任何分配。

ldd asan_instrumented_proc
    1. linux-vdso.so.1
    2. libfoo
    3. libclang_rt.asan-x86_64.so

我对 ASAN 进行了更改以忽略对 ASAN 是否是第一个链接库的检查。

如果 libfoo 不干扰 asan 的功能,您是否发现这种用法有任何问题?

是的,只要 libfoo 不拦截任何已被 Asan 拦截的函数(您可以从 readelf -sW --dyn-syms $(gcc -print-file-name=libasan.so) 获取完整列表),这将有效。为了安全起见,Asan 会在这种情况下发出警告,您可以通过 ASAN_OPTIONS=verify_asan_link_order=0.

抑制该警告