使用 ASAN 构建 glib 库

Building glib library with ASAN

我正在使用 ASAN 构建 glib 库,gcc 版本是 6.3。

我能够使用 ASAN 编译和构建 glib 库。我的配置命令是:-

../configure  CC='/local/test/v6.3.0/bin/gcc' CXX='/local/test/v6.3.0/bin/g++' CFLAGS='-fPIC -O2 -fsanitize=address' CXXFLAGS='-fPIC -fsanitize=address' LDFLAGS='-L/local/test/v6.3.0/lib64 -lasan' LD_LIBRARY_PATH='/local/test/v6.3.0/lib64'  --enable-static=yes --prefix=/home/testing/debug_glib/glib-2.56.1/testing_glb --enable-libmount=no PYTHON=/local/test/pkgs/python/v2.7.6/bin/python --with-pcre=/home/testing/pcre_lib/pcre-8.20/pcre_library

在这里,当我尝试使用新创建的 glib 库时,我遇到了未定义的符号引用问题:

$ /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl
/home/testing/lib/libglib-2.0.so: undefined symbol: __asan_option_detect_stack_use_after_return

我正在链接其中定义了上述符号的 ASAN 库 (-lasan)。这里缺少任何东西吗?请帮忙! 提前致谢。

构建最新版本的 GLib (2.62.4)。它是使用 Meson 而不是 autotools 构建的,您可以在配置构建时 enable ASAN by passing -Db_sanitize=address to meson

首先您需要将您的LDFLAGS更正为

LDFLAGS=-fsanitize=address

然后,您需要在 运行 未清理时预加载 libasan 可执行

LD_PRELOAD=path/to/libasan.so /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl