Почему ASAN SYMBOLIZER PATH больше не работает с двоичными файлами, украшенными версиями

на Ubuntu 14.10,llvm-symbolizer программа устанавливается как /usr/bin/llvm-symbolizer-3.5. Обычно дезинфицирующее средство адреса хочет найти двоичный файл с именем llvm-symbolizer на PATH. Однако в качестве обходного пути можно было явно установить ASAN_SYMBOLIZER_PATH. Итак, настройка ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5 в среде позволит адрес дезинфицирующее средство инструментальной программы печати символизировал ошибки.

на Ubuntu 16.04,llvm-symbolizer программа снова устанавливается с суффиксом версии, теперь как /usr/bin/llvm-symbolizer-3.8. Однако ASAN_SYMBOLIZER_PATH настройки больше не похоже, сработало. Запуск инструментальной программы ASAN с помощью ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8 set в среде генерирует следующую ошибку, когда ASAN обнаруживает ошибку:

==18718==ERROR: External symbolizer path is set to '/usr/bin/llvm-symbolizer-3.8' which isn't a known symbolizer. Please set the path to the llvm-symbolizer binary or other known tool.

кто-нибудь знает, почему это поведение изменилось, или как восстановить старое поведение? Это кажется необоснованно ограничительным. Программа symbolizer, на которую я указал ASAN, определенно является известным символистом, у нее просто есть тег версии Ubuntu в конце.

обратите внимание, что настройка PATH не помочь здесь, так как Ubuntu не корабль llvm-symbolizer двоичный файл, который поставляется без украшений версии.

2 ответов


оказывается, что на упаковке Ubuntu LLVM можно получить unadorned llvm-symbolizer двоичный файл из пути /usr/lib/llvm-3.x/bin, so PATH=/usr/lib/llvm-3.x/bin:$PATH [COMMAND] делает трюк. Я все еще думаю, что это изменение является регрессией в compiler_rt.


следующее

sudo ln -s /usr/bin/llvm-symbolizer-3.8 /usr/bin/llvm-symbolizer

также работает для llvm-symbolizer-4.0

(скопировано из комментария @Eraden)