Bug #120653 LLVM 21 -Wformat / -Wmissing-format-attribute warnings

Submitted: 10 Jun 7:44 Modified: 11 Jun 9:51
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:8.0.46, 8.4.9 OS:MacOS (26.5.1)
Assigned to: CPU Architecture:ARM

[10 Jun 7:44] Laurynas Biveinis
Description:
FAILED: [code=1] strings/CMakeFiles/strings.dir/ctype.cc.o
/opt/homebrew/opt/llvm/bin/clang++ -DBOOST_NO_CXX98_FUNCTION_BASE -DDISABLE_MYSQL_THREAD_H -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/include -I/Users/laurynas/vilniusdb/mysql-8.0.46 -I/Users/laurynas/vilniusdb/mysql-8.0.46/include -isystem /Users/laurynas/vilniusdb/mysql-8.0.46/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl@1.1/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -isystem /Users/laurynas/vilniusdb/mysql-8.0.46/extra/zlib/zlib-1.3.2 -isystem /Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/extra/zlib/zlib-1.3.2 -std=c++17 -fno-omit-frame-pointer -ftls-model=initial-exec -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option -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 -Werror -ffunction-sections -fdata-sections -O2 -DNDEBUG -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option -arch arm64 -fPIC -fcolor-diagnostics -Wshadow-uncaptured-local -MD -MT strings/CMakeFiles/strings.dir/ctype.cc.o -MF strings/CMakeFiles/strings.dir/ctype.cc.o.d  --language=c++  -o strings/CMakeFiles/strings.dir/ctype.cc.o -c /Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc
/Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc:372: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]
  366 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
      | [[gnu::format(printf, 2, 3)]]
  367 |                             const char *attr) {
  368 |   struct my_cs_file_info *i = (struct my_cs_file_info *)st->user_data;
  369 |   size_t newlen = i->tailoring_length + len + 64; /* 64 for format */
  370 |   if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
  371 |     char *dst = i->tailoring + i->tailoring_length;
  372 |     sprintf(dst, fmt, (int)len, attr);
      |                                     ^
/Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc:366:12: note: 'tailoring_append' declared here
  366 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
      |            ^
/Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc:386: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]
  379 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
      | [[gnu::format(printf, 2, 3)]]
  380 |                              const char *attr1, size_t len2,
  381 |                              const char *attr2) {
  382 |   struct my_cs_file_info *i = (struct my_cs_file_info *)st->user_data;
  383 |   size_t newlen = i->tailoring_length + len1 + len2 + 64; /* 64 for format */
  384 |   if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
  385 |     char *dst = i->tailoring + i->tailoring_length;
  386 |     sprintf(dst, fmt, (int)len1, attr1, (int)len2, attr2);
      |                                                         ^
/Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc:379:12: note: 'tailoring_append2' declared here
  379 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
      |            ^
/Users/laurynas/vilniusdb/mysql-8.0.46/strings/ctype.cc:602:45: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
  602 |       rc = tailoring_append(st, "[version %.*s]", len, attr);
      |                                           ~~^~    ~~~
... many more instances of -Wformat

How to repeat:
CMake options

-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DFORCE_UNSUPPORTED_COMPILER=ON -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_SYSTEM_LIBS=ON -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF -DMYSQL_MAINTAINER_MODE=ON -DDOWNLOAD_BOOST=ON -DWITH_BOOST=~/vilniusdb/mysql-boost/ -DFORCE_COLORED_OUTPUT=ON -DCMAKE_C_FLAGS=-O2 -DNDEBUG -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option -Wno-unknown-warning-option -DCMAKE_CXX_FLAGS=-Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option -DCMAKE_CXX_FLAGS_DEBUG=-Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option -DCMAKE_CXX_FLAGS_RELEASE=-O2 -DNDEBUG -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-unknown-warning-option

These include workarounds for bug 119238, bug 119239, bug 119242, bug 120650, bug 119246.

With -Wno-format -Wno-missing-format-attribute added:

FAILED: [code=1] router/src/connection_pool/src/CMakeFiles/connection_pool.dir/connection_pool_component.cc.o
/opt/homebrew/opt/llvm/bin/clang++ -DBOOST_NO_CXX98_FUNCTION_BASE -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dconnection_pool_EXPORTS -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/include -I/Users/laurynas/vilniusdb/mysql-8.0.46 -I/Users/laurynas/vilniusdb/mysql-8.0.46/include -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/router -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/router/include -I/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/connection_pool/src -I/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/connection_pool/src/../include -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/router/src/connection_pool/src/../include -I/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/harness/src/../include -I/Users/laurynas/vilniusdb/mysql-8.0.46/_build-llvm-21-release/router/src/harness/src/../include -I/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/harness/include -I/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/mysql_protocol/include -isystem /Users/laurynas/vilniusdb/mysql-8.0.46/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl@1.1/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -std=c++17 -fno-omit-frame-pointer -ftls-model=initial-exec -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-format -Wno-missing-format-attribute -Wno-unknown-warning-option -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 -Werror -ffunction-sections -fdata-sections -O2 -DNDEBUG -Wno-invalid-specialization -g -Wno-uninitialized-const-pointer -Wno-conditional-uninitialized -Wno-unnecessary-virtual-specifier -Wno-nonnull -Wno-unused-but-set-variable -Wno-format-extra-args -Wno-format -Wno-missing-format-attribute -Wno-unknown-warning-option -arch arm64 -fPIC -fcolor-diagnostics -MD -MT router/src/connection_pool/src/CMakeFiles/connection_pool.dir/connection_pool_component.cc.o -MF router/src/connection_pool/src/CMakeFiles/connection_pool.dir/connection_pool_component.cc.o.d  --language=c++  -o router/src/connection_pool/src/CMakeFiles/connection_pool.dir/connection_pool_component.cc.o -c /Users/laurynas/vilniusdb/mysql-8.0.46/router/src/connection_pool/src/connection_pool_component.cc
In file included from /Users/laurynas/vilniusdb/mysql-8.0.46/router/src/connection_pool/src/connection_pool_component.cc:32:
In file included from /Users/laurynas/vilniusdb/mysql-8.0.46/router/src/connection_pool/src/../include/mysqlrouter/connection_pool.h:38:
In file included from /Users/laurynas/vilniusdb/mysql-8.0.46/router/src/harness/src/../include/mysql/harness/net_ts/internet.h:53:
/Users/laurynas/vilniusdb/mysql-8.0.46/router/src/harness/src/../include/mysql/harness/net_ts/io_context.h:550:9: error: ignoring return value of function declared with 'nodiscard' attribute [-Werror,-Wunused-result]
  550 |         pending_timers_.extract(cur);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[11 Jun 9:51] Laurynas Biveinis
8.4.9 is also affected

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.062 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.