首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asan :关于asan库加载的问题

Asan :关于asan库加载的问题
EN

Stack Overflow用户
提问于 2020-01-22 06:21:32
回答 1查看 12.8K关注 0票数 4

在我们的构建系统中,我们最近将ASAN工具(添加-fsanitize=address)集成到CFLAGS &同时链接、创建库.so文件。注:-我们使用GCC 6.3编译器。

我们能够成功地构建代码。但是,在运行它时,会出现以下问题:

代码语言:javascript
复制
==52215==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.

这是gcc的命令:-

代码语言:javascript
复制
/local/common/pkgs/gcc/v6.3.0/bin/gcc -m32 -shared -o /local/testing/build/new_tool/asan_build/syn/verilog/libspd.so  -Wl,-rpath=\$ORIGIN/lib -Wl,-rpath=\$ORIGIN/../lib -W1,-rpath=/local/common/gcc/v6.3.0/lib  -fsanitize=address -L/local/testing/build/new_tool/asan_build/modules /local/testing/build/new_tool/asan_build/modules/silvpi.o /local/testing/build/new_tool/asan_build/modules/sypsv.o /local/testing/build/new_tool/asan_build/modules/cdnsv_tfs.o /local/testing/build/new_tool/asan_build/modules/libcore.o /local/testing/build/new_tool/asan_build/modules/vpi_user.o /local/testing/build/new_tool/asan_build/modules/libdenbase.a /local/testing/build/new_tool/asan_build/modules/libbdd.a  -L/local/testing/build/new_tool/asan_build/syn/lib -L/local/testing/build/new_tool/asan_build/modules -L/home/local/outer/Linux/lib /local/testing/build/new_tool/asan_build/modules/vhpimodelfunc.o /local/testing/build/new_tool/asan_build/modules/vipcommonlib.a  -lm -lc -ldenbase -lbdd -ldenbase -lviputil -llocalCommonMT_sh

我能够成功地构建库libspd.so。但是当我们试图运行它时,上面提到的错误失败了。

我可以看到libspd.so的依赖库列表

代码语言:javascript
复制
ldd /local/testing/build/new_tool/asan_build/syn/verilog/libspd.so
    linux-gate.so.1 =>  (0x00279000)
    libasan.so.3 => /local/pkgs/gcc/v6.3.0/lib/libasan.so.3 (0xf7175000)
    libm.so.6 => /lib/libm.so.6 (0x0014e000)
    libc.so.6 => /lib/libc.so.6 (0xf6f83000)
    libcdsCommonMT_sh.so => /local/testing/build/new_tool/asan_build/verilog/../lib/liblocalCommonMT_sh.so (0x00178000)
    libdl.so.2 => /lib/libdl.so.2 (0x00197000)

我们试图用'xrun‘运行我们的应用程序,它在我的构建之上运行模拟,我的构建是用asan构建的。正如错误所言:you should either link runtime to your application我试图将我的完整库路径添加到LD_LIBRARY_PATH中,但仍然面临相同的问题。

不知道这里出了什么问题。我怎样才能解决这个问题?

有什么想法吗?谢谢和问候!

EN

Stack Overflow用户

发布于 2020-01-24 10:34:19

您有几种方法可以解决这个问题:

在您的测试中使用-fsanitize=address

  • get
  • 使用/etc/ld.so.preload构建主可执行文件--使用export ASAN_OPTIONS=verify_asan_link_order=0进行检查(需要最近的GCC检查);但是您必须确保/etc/ld.so.preload的库不会截取对Asan非常重要的符号,例如malloc、free等,否则就会开始破坏

票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59853730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档