ahe*_*wer 6 c++ rust address-sanitizer treesitter
在tree-sitter 中,语法从C 和C++ 编译为共享库。然后,这些库由 tree-sitter CLI(一个 Rust 程序)动态加载。树守护者 CLI 通常负责编译语法,尽管它没有-fsanitize标志。我手动编译了我的语法-fsanitize=address(最终想要添加undefined)来帮助调试我作为外部扫描器的一部分编写的一些 C++ 代码。然而,当我尝试使用 tree-sitter CLI rust 程序加载它时,我得到:
打开动态库“~/.cache/tree-sitter/lib/tlaplus.so”时出错
引起:~/.cache/tree-sitter/lib/tlaplus.so:未定义符号:__asan_report_store4
所以 Rust 没有加载 ASAN。我尝试使用 nightly rust 工具链重建树守护者 CLI,并且:
RUSTFLAGS="-Z sanitizer=address" cargo build --target x86_64-unknown-linux-gnu --release
Run Code Online (Sandbox Code Playgroud)
但这仍然给出相同的未定义符号错误。有没有办法从 rust 加载使用 ASAN 编译的 C++ 库,或者我应该将自己的 C++ 前端编写到语法中?
根据https://maxammann.org/posts/2021/06/sanitize-rust-sys-crate/
RUSTFLAGS="-C link-arg=-lasan"
Run Code Online (Sandbox Code Playgroud)