Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Incomplete
-
10.1.21
-
Scientific Linux 7.3 with SCL devtoolset v6
GCC 6.2.1
Description
Compilation with LTO enabled fails due to mismatching types in the XZ part of TokuDB, throwing the following errors.
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.h:39:17: error: type of 'lzma_lzma_encoder_create' does not match original declaration [-Werror=lto-type-mismatch]
|
extern lzma_ret lzma_lzma_encoder_create(
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:550:1: note: 'lzma_lzma_encoder_create' was previously declared here
|
lzma_lzma_encoder_create(lzma_coder **coder_ptr, lzma_allocator *allocator,
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:550:1: note: code may be misoptimized unless -fno-strict-aliasing is used
|
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.h:45:17: error: type of 'lzma_lzma_encoder_reset' does not match original declaration [-Werror=lto-type-mismatch]
|
extern lzma_ret lzma_lzma_encoder_reset(
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:478:1: note: 'lzma_lzma_encoder_reset' was previously declared here
|
lzma_lzma_encoder_reset(lzma_coder *coder, const lzma_options_lzma *options)
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:478:1: note: code may be misoptimized unless -fno-strict-aliasing is used
|
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.h:49:17: error: type of 'lzma_lzma_encode' does not match original declaration [-Werror=lto-type-mismatch]
|
extern lzma_ret lzma_lzma_encode(lzma_coder *restrict coder,
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:314:1: note: 'lzma_lzma_encode' was previously declared here
|
lzma_lzma_encode(lzma_coder *restrict coder, lzma_mf *restrict mf,
|
^
|
/builddir/build/BUILD/mariadb-10.1.21/release/storage/tokudb/PerconaFT/xz/src/build_lzma/src/liblzma/lzma/lzma_encoder.c:314:1: note: code may be misoptimized unless -fno-strict-aliasing is used
|
lto1: all warnings being treated as errors
|
Compiling with -Wno-error=lto-type-mismatch allows the compilation to complete. However due to the differing definitions, this might potentially lead to data-corrupting bugs (I have not investigated whether corruption is actually possible here, but until someone does, it should be assumed to be possible).
Definitions look identical to me. Where do they differ?