Отладочный вывод LLVM через ржавчину - PullRequest
0 голосов
/ 23 апреля 2019

Я ищу способ прочитать выходные данные отладки LLVM, вызвав компилятор ржавчины (через Cargo).Я особенно заинтересован в выпуске LLVMs ASAN.

Чтобы запустить сборку с ASAN, я могу сделать:

cargo clean && RUSTFLAGS="-Zsanitizer=address" cargo build

, но я не знаю команду для получения выходных данных журнала отладки.

С помощью clang я думаю, что можно добавить

-mllvm -debug-only=asan

в качестве флага компилятора.

Как я могу предоставить что-то вроде этого флага через rustc?

Я использую текущий источник ржавчины (https://github.com/rust-lang/rust/ commit 31f5d69), чтобы сам создать rustc.

1 Ответ

1 голос
/ 25 апреля 2019

Эквивалентный аргумент компилятора для rustc:

-C llvm-args=-debug-only=<LLVM DEBUG_TYPE>

Часть -C предоставляет доступ к параметрам для генерации кода ржавчины.

Часть llvm-args сообщает rustc о пересылкекаждый последующий флаг LLVM.Если я правильно понимаю, вы можете указать каждую опцию LLVM, которая оценивается с cl::opt() в исходном коде LLVM.

Таким образом, полная команда для создания приложения ржавчины с ASAN и просмотра только вывода журнала ASAN будет:

cargo clean && RUSTFLAGS="-C llvm-args=-debug-only=asan -Zsanitizer=address" cargo build

Примечание: я думаю, что режим отладки для LLVM должен быть включен в config.toml при сборке ржавчины, чтобы увидеть соответствующий вывод журнала.

...