Запуск кода gzip.hpp
из boost версии 1.64 с помощью ubsan clang выдает следующее сообщение:
path/to/boost/1_64_0/include/boost/iostreams/filter/gzip.hpp:674:16: runtime error: implicit conversion from type 'int' of value 139 (32-bit, signed) to type 'char' changed the value to -117 (8-bit, signed)
#0 0x7fed40b77bc2 in boost::iostreams::basic_gzip_compressor<std::allocator<char> >::basic_gzip_compressor(boost::iostreams::gzip_params const&, long)
Я хотел бы подавить это с помощью файла подавления.Для других предупреждений это сработало:
unsigned-integer-overflow:path/to/boost/*
В этом случае я ожидал бы, что это должно сработать
implicit-integer-sign-change:/lfs/vlsi/tools/boost/*
, но это дает во время выполнения
UndefinedBehaviorSanitizer: failed to parse suppressions
Чтоправильное имя этого флага sanatizer?
См. также: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#runtime-suppressions
и от https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#available-checks
-fsanitize = implicit-integer-sign-изменение: неявное преобразование между целочисленными типами, если это меняет знак значения.То есть, если исходное значение было отрицательным, а новое значение положительным (или нулевым), или исходное значение было положительным, а новое значение отрицательным.Проблемы, обнаруживаемые этим дезинфицирующим средством, не являются неопределенным поведением, но часто непреднамеренными.