Bug #119239 Compilation error with clang 21 / XCode

Submitted: 27 Oct 2025 7:53 Modified: 11 Jun 4:05
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.0.1)
Assigned to: CPU Architecture:ARM

[27 Oct 2025 7:53] Laurynas Biveinis
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 -DDOWNLOAD_BOOST=ON -DWITH_BOOST=(path) -DFORCE_COLORED_OUTPUT=ON -DCMAKE_CXX_FLAGS=-Wno-invalid-specialization -g -DCMAKE_CXX_FLAGS_DEBUG=-Wno-invalid-specialization -g -DCMAKE_CXX_FLAGS_RELEASE=-O2 -DNDEBUG -Wno-invalid-specialization -g

with Homebrew-packaged LLVM 21 result in

FAILED: [code=1] scripts/CMakeFiles/comp_sql.dir/comp_sql.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 -I/Users/laurynas/vilniusdb/mysql-8.0.44/_build-release-llvm -I/Users/laurynas/vilniusdb/mysql-8.0.44/_build-release-llvm/include -I/Users/laurynas/vilniusdb/mysql-8.0.44 -I/Users/laurynas/vilniusdb/mysql-8.0.44/include -isystem /Users/laurynas/vilniusdb/mysql-8.0.44/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 -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 -arch arm64 -fPIE -fcolor-diagnostics -MD -MT scripts/CMakeFiles/comp_sql.dir/comp_sql.cc.o -MF scripts/CMakeFiles/comp_sql.dir/comp_sql.cc.o.d  --language=c++  -o scripts/CMakeFiles/comp_sql.dir/comp_sql.cc.o -c /Users/laurynas/vilniusdb/mysql-8.0.44/scripts/comp_sql.cc
In file included from /Users/laurynas/vilniusdb/mysql-8.0.44/scripts/comp_sql.cc:37:
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:728:42: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
  728 |       &state, key, PSI_FILE_STAT, path, &locker);
      |                                          ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:943:48: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
  943 |       &state, key, PSI_FILE_CREATE, filename, &locker);
      |                                                ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:967:47: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
  967 |       &state, key, PSI_FILE_CREATE, nullptr, &locker);
      |                                               ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:992:46: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
  992 |       &state, key, PSI_FILE_OPEN, filename, &locker);
      |                                              ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:1200:44: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
 1200 |       &state, key, PSI_FILE_DELETE, name, &locker);
      |                                            ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:1223:44: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
 1223 |       &state, key, PSI_FILE_RENAME, from, &locker);
      |                                            ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:1248:48: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
 1248 |       &state, key, PSI_FILE_CREATE, filename, &locker);
      |                                                ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:1273:44: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
 1273 |       &state, key, PSI_FILE_DELETE, name, &locker);
      |                                            ^~~~~~
/Users/laurynas/vilniusdb/mysql-8.0.44/include/mysql/psi/mysql_file.h:1296:44: error: variable 'locker' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
 1296 |       &state, key, PSI_FILE_RENAME, from, &locker);
      |                                            ^~~~~~

How to repeat:
See above
[27 Oct 2025 8:01] Laurynas Biveinis
With -Wno-uninitialized-const-pointer the build stops at

[324/3757] Linking CXX executable runtime_output_directory/comp_client_err
FAILED: [code=1] runtime_output_directory/comp_client_err
: && /opt/homebrew/opt/llvm/bin/clang++ -std=c++17 -fno-omit-frame-pointer -ftls-model=initial-exec -Wno-invalid-specialization -Wno-uninitialized-const-pointer -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 -Werror -ffunction-sections -fdata-sections -O2 -DNDEBUG -Wno-invalid-specialization -Wno-uninitialized-const-pointer -g -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -Xlinker -no_warn_duplicate_libraries utilities/CMakeFiles/comp_client_err.dir/comp_client_err.cc.o utilities/CMakeFiles/comp_client_err.dir/__/libmysql/errmsg.cc.o -o runtime_output_directory/comp_client_err  archive_output_directory/libmysys.a  archive_output_directory/libstrings.a  archive_output_directory/libmysys.a  archive_output_directory/libstrings.a  archive_output_directory/libmytime.a  archive_output_directory/libzlib.a  /opt/homebrew/lib/libzstd.dylib  /opt/homebrew/opt/openssl@1.1/lib/libssl.dylib  /opt/homebrew/opt/openssl@1.1/lib/libcrypto.dylib && cd /Users/laurynas/vilniusdb/mysql-8.0.44/_build-release-llvm/utilities && codesign --sign - --preserve-metadata=entitlements --force --entitlements /Users/laurynas/vilniusdb/mysql-8.0.44/_build-release-llvm/dev.entitlements /Users/laurynas/vilniusdb/mysql-8.0.44/_build-release-llvm/runtime_output_directory/comp_client_err
Undefined symbols for architecture arm64:
  "std::__1::__hash_memory(void const*, unsigned long)", referenced from:
      std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, true>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>>>::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in libmysys.a[3](charset.cc.o)
      std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, true>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, int>>>::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&>, std::__1::tuple<>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&>&&, std::__1::tuple<>&&) in libmysys.a[3](charset.cc.o)
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[27 Oct 2025 12:14] Laurynas Biveinis
8.4.7 is also affected, and the workaround allows the build to proceed until bug 119242
[23 Jan 8:23] Laurynas Biveinis
Same with 8.0.45
[23 Jan 10:19] Laurynas Biveinis
Same with 8.4.8, which in addition started being affected by bug 119246
[9 Jun 13:51] Laurynas Biveinis
Same with 8.0.46 with current XCode
[11 Jun 4:05] Laurynas Biveinis
Same with 8.4.9 with current XCode

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

Page generated in 0.044 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.