В нашей системе сборки мы недавно интегрировали инструмент ASAN (добавление -fsanitize = address) к CFLAGS, а также при компоновке, создавая файлы библиотеки .so. Примечание: - Мы используем компилятор G CC 6.3.
Мы можем успешно построить наш код. Но во время работы происходит сбой со следующей проблемой:
==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.
Вот моя команда g cc: -
/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
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 'где он запускает симуляцию поверх моей сборки, которая была построена с помощью асана. Как говорит ошибка: you should either link runtime to your application
я пытался добавить свой полный путь к библиотеке asan в LD_LIBRARY_PATH, все еще сталкиваясь с той же проблемой.
Не уверен, что здесь происходит не так. Как я могу решить эту проблему?
Есть идеи? Спасибо и всего наилучшего!