| Bug #119246 | 9.7.0-er2 compilation error with LLVM 21 | ||
|---|---|---|---|
| Submitted: | 27 Oct 2025 15:02 | Modified: | 13 Apr 14:33 |
| Reporter: | Laurynas Biveinis (OCA) | Email Updates: | |
| Status: | Open | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | 8.4.8, 9.7.0-er2 | OS: | MacOS (26.0.1) |
| Assigned to: | CPU Architecture: | ARM | |
[23 Jan 10:04]
Laurynas Biveinis
8.4 series started being affected too in 8.4.8
[23 Jan 12:14]
Laurynas Biveinis
Same with 9.6.0
[24 Mar 13:48]
Laurynas Biveinis
Some LLVM 21 build errors with 9.7.0-er:
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:378:37: error: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'tailoring_append' [-Werror,-Wmissing-format-attribute]
372 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
| [[gnu::format(printf, 2, 3)]]
373 | const char *attr) {
374 | auto *i = (struct my_cs_file_info *)st->user_data;
375 | size_t const newlen = i->tailoring_length + len + 64; /* 64 for format */
376 | if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
377 | char *dst = i->tailoring + i->tailoring_length;
378 | sprintf(dst, fmt, (int)len, attr);
| ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:372:12: note: 'tailoring_append' declared here
372 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
| ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:393:57: error: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'tailoring_append2' [-Werror,-Wmissing-format-attribute]
385 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
| [[gnu::format(printf, 2, 3)]]
386 | const char *attr1, size_t len2,
387 | const char *attr2) {
388 | auto *i = (struct my_cs_file_info *)st->user_data;
389 | size_t const newlen =
390 | i->tailoring_length + len1 + len2 + 64; /* 64 for format */
391 | if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
392 | char *dst = i->tailoring + i->tailoring_length;
393 | sprintf(dst, fmt, (int)len1, attr1, (int)len2, attr2);
| ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:385:12: note: 'tailoring_append2' declared here
385 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
| ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:458:41: error: data argument not used by format string [-Werror,-Wformat-extra-args]
458 | return tailoring_append(st, " &", 0, nullptr);
| ~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:480:58: error: data argument not used by format string [-Werror,-Wformat-extra-args]
480 | rc = tailoring_append(st, "[first non-ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:484:57: error: data argument not used by format string [-Werror,-Wformat-extra-args]
484 | rc = tailoring_append(st, "[last non-ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:488:62: error: data argument not used by format string [-Werror,-Wformat-extra-args]
488 | rc = tailoring_append(st, "[first primary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:492:61: error: data argument not used by format string [-Werror,-Wformat-extra-args]
492 | rc = tailoring_append(st, "[last primary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:496:64: error: data argument not used by format string [-Werror,-Wformat-extra-args]
496 | rc = tailoring_append(st, "[first secondary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:500:63: error: data argument not used by format string [-Werror,-Wformat-extra-args]
500 | rc = tailoring_append(st, "[last secondary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:504:63: error: data argument not used by format string [-Werror,-Wformat-extra-args]
504 | rc = tailoring_append(st, "[first tertiary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:508:62: error: data argument not used by format string [-Werror,-Wformat-extra-args]
508 | rc = tailoring_append(st, "[last tertiary ignorable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:512:53: error: data argument not used by format string [-Werror,-Wformat-extra-args]
512 | rc = tailoring_append(st, "[first trailing]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:516:52: error: data argument not used by format string [-Werror,-Wformat-extra-args]
516 | rc = tailoring_append(st, "[last trailing]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:520:53: error: data argument not used by format string [-Werror,-Wformat-extra-args]
520 | rc = tailoring_append(st, "[first variable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:524:52: error: data argument not used by format string [-Werror,-Wformat-extra-args]
524 | rc = tailoring_append(st, "[last variable]", 0, nullptr);
| ~~~~~~~~~~~~~~~~~ ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:626:45: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
626 | rc = tailoring_append(st, "[version %.*s]", len, attr);
| ~~^~ ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:630:59: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
630 | rc = tailoring_append(st, "[suppress contractions %.*s]", len, attr);
| ~~^~ ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:634:46: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
634 | rc = tailoring_append(st, "[optimize %.*s]", len, attr);
| ~~^~ ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:638:56: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
638 | rc = tailoring_append(st, "[shift-after-method %.*s]", len, attr);
| ~~^~ ~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
[10 Apr 17:14]
Laurynas Biveinis
With 9.7.0-er2 the error is
[24/4515] Building CXX object router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o
FAILED: [code=1] router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o
/opt/homebrew/opt/llvm/bin/clang++ -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dharness_stdx_EXPORTS -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2 -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/../include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router/src/harness/src/../include -isystem /Users/laurynas/vilniusdb/mysql-9.7.0-er2/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g -std=gnu++23 -arch arm64 -fPIC -fcolor-diagnostics -MD -MT router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o -MF router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o.d --language=c++ -o router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o -c /Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/stdx/filesystem.cc
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/stdx/filesystem.cc:120:18: error: use of undeclared identifier 'getenv'
120 | auto *path = getenv(envvar);
| ^~~~~~
1 error generated.
I don't know if it's earlier or later than the previous errors in the build
[10 Apr 18:24]
Laurynas Biveinis
With -DWITH_ROUTER=OFF the LLVM 21 build error becomes identical to XCode 26.4 one:
FAILED: [code=1] libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o
/opt/homebrew/opt/llvm/bin/clang++ -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2 -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs -isystem /Users/laurynas/vilniusdb/mysql-9.7.0-er2/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g -std=gnu++23 -arch arm64 -fPIC -fcolor-diagnostics -MD -MT libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o -MF libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o.d --language=c++ -o libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o -c /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp
In file included from /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp:24:
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:20: error: no template named 'is_trivial_v' in namespace 'std'; did you mean 'is_final_v'?
83 | static_assert(std::is_trivial_v<Tag_plain>);
| ~~~~~^~~~~~~~~~~~
| is_final_v
/opt/homebrew/Cellar/llvm/22.1.2/bin/../include/c++/v1/__type_traits/is_final.h:31:50: note: 'is_final_v' declared here
31 | _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_final_v = __is_final(_Tp);
| ^
In file included from /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp:24:
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: error: static assertion failed due to requirement 'std::is_final_v<mysql::gtid::Tag_plain>'
83 | static_assert(std::is_trivial_v<Tag_plain>);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: note: 'mysql::gtid::Tag_plain' is not final
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: note: because it is not marked 'final'
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:47:8: note: 'Tag_plain' defined here
47 | struct Tag_plain {
| ^
2 errors generated.
[13 Apr 14:33]
Laurynas Biveinis
Update title

Description: CMake options: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DFORCE_UNSUPPORTED_COMPILER=ON -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DMYSQL_MAINTAINER_MODE=ON -DWITH_SYSTEM_LIBS=ON -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF -DFORCE_COLORED_OUTPUT=ON -DCMAKE_CXX_FLAGS=-g -DCMAKE_CXX_FLAGS_DEBUG=-g -DCMAKE_CXX_FLAGS_RELEASE=-O2 -DNDEBUG -g results in FAILED: [code=1] sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o /opt/homebrew/opt/llvm/bin/clang++ -DBOOST_NO_CXX98_FUNCTION_BASE -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -DMYSQLXMESSAGES_STATIC_DEFINE -DMYSQL_SERVER -DRAPIDJSON_HAS_STDSTRING=1 -DRAPIDJSON_NO_SIZETYPEDEFINE -DRAPIDJSON_SCHEMA_USE_INTERNALREGEX=0 -DRAPIDJSON_SCHEMA_USE_STDREGEX=1 -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm -I/Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/include -I/Users/laurynas/vilniusdb/mysql-9.5.0 -I/Users/laurynas/vilniusdb/mysql-9.5.0/include -I/Users/laurynas/vilniusdb/mysql-9.5.0/libs -I/Users/laurynas/vilniusdb/mysql-9.5.0/router/src/harness/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -isystem /opt/homebrew/opt/icu4c/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/unordered_dense/unordered_dense-4.4.0/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/zlib/zlib-1.3.1 -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/extra/zlib/zlib-1.3.1 -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/plugin/x/client -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/plugin/x/generated/protobuf_lite -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/plugin/x/generated -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/boost/boost_1_87_0 -std=c++20 -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -ffunction-sections -fdata-sections -O2 -DNDEBUG -g -std=gnu++20 -arch arm64 -fPIC -fcolor-diagnostics -Wshadow-uncaptured-local -MD -MT sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o -MF sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o.d --language=c++ -o sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o -c /Users/laurynas/vilniusdb/mysql-9.5.0/sql/dd/info_schema/show_query_builder.cc In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/dd/info_schema/show_query_builder.cc:37: In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/parse_tree_nodes.h:50: In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/opt_explain.h:61: /Users/laurynas/vilniusdb/mysql-9.5.0/sql/opt_explain_format.h:646:12: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] 646 | return nullptr; | ^~~~~~~ How to repeat: See above