gzip.hpp
ブースト バージョン 1.64 のコードを clang の ubsan で実行すると、次のメッセージが表示されます。
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
このサナタイザーの旗の正しい名前は?
参照: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#runtime-suppressions
およびhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#available-checksから
-fsanitize=implicit-integer-sign-change: 整数型間の暗黙的な変換 (値の符号が変わる場合)。つまり、元の値が負で新しい値が正 (またはゼロ) の場合、または元の値が正で新しい値が負の場合です。このサニタイザーによって検出される問題は、未定義の動作ではありませんが、多くの場合、意図的ではありません。