]> git.ipfire.org Git - thirdparty/xz.git/commit
liblzma: Fix -fsanitize=address failure with crc_clmul functions.
authorJia Tan <jiat0218@gmail.com>
Wed, 18 Oct 2023 16:22:50 +0000 (00:22 +0800)
committerJia Tan <jiat0218@gmail.com>
Wed, 18 Oct 2023 17:15:20 +0000 (01:15 +0800)
commitc60b25569d414bb73b705977a4dd342f8f9f1965
tree42a3562de775ddac2947b636cfccddf5de0e0e92
parent9a78971261bc67622cbd7dae02f6966968ac1393
liblzma: Fix -fsanitize=address failure with crc_clmul functions.

After forcing crc_simd_body() to always be inlined it caused
-fsanitize=address to fail for lzma_crc32_clmul() and
lzma_crc64_clmul(). The __no_sanitize_address__ attribute was added
to lzma_crc32_clmul() and lzma_crc64_clmul(), but not removed from
crc_simd_body(). ASAN and inline functions behavior has changed over
the years for GCC specifically, so while strictly required we will
keep __attribute__((__no_sanitize_address__)) on crc_simd_body() in
case this becomes a requirement in the future.

Older GCC versions refuse to inline a function with ASAN if the
caller and callee do not agree on sanitization flags
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89124#c3). If the
function was forced to be inlined, it will not compile if the callee
function has __no_sanitize_address__ but the caller doesn't.
src/liblzma/check/crc_clmul.c