diff --git a/ci/test/00_setup_env_native_iwyu.sh b/ci/test/00_setup_env_native_iwyu.sh index 3868510d43a..27b1e02b6db 100755 --- a/ci/test/00_setup_env_native_iwyu.sh +++ b/ci/test/00_setup_env_native_iwyu.sh @@ -8,9 +8,9 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/debian:trixie" # To build codegen, CMake must be 3.31 or newer. export CONTAINER_NAME=ci_native_iwyu -export TIDY_LLVM_V="21" -export APT_LLVM_V="${TIDY_LLVM_V}" -export PACKAGES="clang-${TIDY_LLVM_V} clang-format-${TIDY_LLVM_V} libclang-${TIDY_LLVM_V}-dev llvm-${TIDY_LLVM_V}-dev jq libevent-dev libboost-dev libzmq3-dev systemtap-sdt-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev libsqlite3-dev libcapnp-dev capnproto" +export IWYU_LLVM_V="22" +export APT_LLVM_V="${IWYU_LLVM_V}" +export PACKAGES="clang-${IWYU_LLVM_V} clang-format-${IWYU_LLVM_V} libclang-${IWYU_LLVM_V}-dev llvm-${IWYU_LLVM_V}-dev jq libevent-dev libboost-dev libzmq3-dev systemtap-sdt-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev libsqlite3-dev libcapnp-dev capnproto" export NO_DEPENDS=1 export RUN_UNIT_TESTS=false export RUN_FUNCTIONAL_TESTS=false @@ -20,6 +20,6 @@ export RUN_IWYU=true export GOAL="codegen" export BITCOIN_CONFIG="\ --preset dev-mode -DBUILD_GUI=OFF \ - -DCMAKE_C_COMPILER=clang-${TIDY_LLVM_V} \ - -DCMAKE_CXX_COMPILER=clang++-${TIDY_LLVM_V} \ + -DCMAKE_C_COMPILER=clang-${IWYU_LLVM_V} \ + -DCMAKE_CXX_COMPILER=clang++-${IWYU_LLVM_V} \ " diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 308f7abe862..c1908b7c6b0 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -85,9 +85,9 @@ if [[ -n "${USE_INSTRUMENTED_LIBCPP}" ]]; then fi if [[ "${RUN_IWYU}" == true ]]; then - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/include-what-you-use/include-what-you-use -b clang_"${TIDY_LLVM_V}" /include-what-you-use + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/include-what-you-use/include-what-you-use -b clang_"${IWYU_LLVM_V}" /include-what-you-use (cd /include-what-you-use && patch -p1 < /ci_container_base/ci/test/01_iwyu.patch) - cmake -B /iwyu-build/ -G 'Unix Makefiles' -DCMAKE_PREFIX_PATH=/usr/lib/llvm-"${TIDY_LLVM_V}" -S /include-what-you-use + cmake -B /iwyu-build/ -G 'Unix Makefiles' -DCMAKE_PREFIX_PATH=/usr/lib/llvm-"${IWYU_LLVM_V}" -S /include-what-you-use make -C /iwyu-build/ install "$MAKEJOBS" fi diff --git a/ci/test/01_iwyu.patch b/ci/test/01_iwyu.patch index 209e133f0e3..d86a02dc766 100644 --- a/ci/test/01_iwyu.patch +++ b/ci/test/01_iwyu.patch @@ -3,9 +3,9 @@ See: https://en.cppreference.com/w/cpp/preprocessor/include.html. --- a/iwyu_path_util.cc +++ b/iwyu_path_util.cc -@@ -211,7 +211,7 @@ bool IsQuotedInclude(const string& s) { +@@ -222,7 +222,7 @@ bool IsQuotedInclude(StringRef s) { } - + string AddQuotes(string include_name, bool angled) { - if (angled) { + if (true) { @@ -19,7 +19,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ --- a/iwyu_include_picker.cc +++ b/iwyu_include_picker.cc -@@ -100,20 +100,20 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -104,20 +104,20 @@ const IncludeMapEntry libc_symbol_map[] = { // equal. The visibility on the symbol-name is ignored; by convention // we always set it to kPrivate. { "_POSIX_VDISABLE", kPrivate, "", kPublic }, @@ -46,7 +46,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "error_t", kPrivate, "", kPublic }, { "error_t", kPrivate, "", kPublic }, { "FD_CLR", kPrivate, "", kPublic }, -@@ -122,10 +122,10 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -126,10 +126,10 @@ const IncludeMapEntry libc_symbol_map[] = { { "fd_set", kPrivate, "", kPublic }, { "FD_SETSIZE", kPrivate, "", kPublic }, { "FD_ZERO", kPrivate, "", kPublic }, @@ -61,7 +61,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "fsblkcnt_t", kPrivate, "", kPublic }, { "fsfilcnt_t", kPrivate, "", kPublic }, { "getopt", kPrivate, "", kPublic }, -@@ -135,31 +135,31 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -139,47 +139,47 @@ const IncludeMapEntry libc_symbol_map[] = { { "in_addr_t", kPrivate, "", kPublic }, { "in_port_t", kPrivate, "", kPublic }, { "id_t", kPrivate, "", kPublic }, @@ -77,20 +77,52 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ - { "int16_t", kPrivate, "", kPublic }, - { "int32_t", kPrivate, "", kPublic }, - { "int64_t", kPrivate, "", kPublic }, +- { "int_fast8_t", kPrivate, "", kPublic }, +- { "int_fast16_t", kPrivate, "", kPublic }, +- { "int_fast32_t", kPrivate, "", kPublic }, +- { "int_fast64_t", kPrivate, "", kPublic }, +- { "int_least8_t", kPrivate, "", kPublic }, +- { "int_least16_t", kPrivate, "", kPublic }, +- { "int_least32_t", kPrivate, "", kPublic }, +- { "int_least64_t", kPrivate, "", kPublic }, - { "uint8_t", kPrivate, "", kPublic }, - { "uint16_t", kPrivate, "", kPublic }, - { "uint32_t", kPrivate, "", kPublic }, - { "uint64_t", kPrivate, "", kPublic }, +- { "uint_fast8_t", kPrivate, "", kPublic }, +- { "uint_fast16_t", kPrivate, "", kPublic }, +- { "uint_fast32_t", kPrivate, "", kPublic }, +- { "uint_fast64_t", kPrivate, "", kPublic }, +- { "uint_least8_t", kPrivate, "", kPublic }, +- { "uint_least16_t", kPrivate, "", kPublic }, +- { "uint_least32_t", kPrivate, "", kPublic }, +- { "uint_least64_t", kPrivate, "", kPublic }, - { "intptr_t", kPrivate, "", kPublic }, - { "uintptr_t", kPrivate, "", kPublic }, + { "int8_t", kPrivate, "", kPrivate }, + { "int16_t", kPrivate, "", kPrivate }, + { "int32_t", kPrivate, "", kPrivate }, + { "int64_t", kPrivate, "", kPrivate }, ++ { "int_fast8_t", kPrivate, "", kPrivate }, ++ { "int_fast16_t", kPrivate, "", kPrivate }, ++ { "int_fast32_t", kPrivate, "", kPrivate }, ++ { "int_fast64_t", kPrivate, "", kPrivate }, ++ { "int_least8_t", kPrivate, "", kPrivate }, ++ { "int_least16_t", kPrivate, "", kPrivate }, ++ { "int_least32_t", kPrivate, "", kPrivate }, ++ { "int_least64_t", kPrivate, "", kPrivate }, + { "uint8_t", kPrivate, "", kPrivate }, + { "uint16_t", kPrivate, "", kPrivate }, + { "uint32_t", kPrivate, "", kPrivate }, + { "uint64_t", kPrivate, "", kPrivate }, ++ { "uint_fast8_t", kPrivate, "", kPrivate }, ++ { "uint_fast16_t", kPrivate, "", kPrivate }, ++ { "uint_fast32_t", kPrivate, "", kPrivate }, ++ { "uint_fast64_t", kPrivate, "", kPrivate }, ++ { "uint_least8_t", kPrivate, "", kPrivate }, ++ { "uint_least16_t", kPrivate, "", kPrivate }, ++ { "uint_least32_t", kPrivate, "", kPrivate }, ++ { "uint_least64_t", kPrivate, "", kPrivate }, + { "intptr_t", kPrivate, "", kPrivate }, + { "uintptr_t", kPrivate, "", kPrivate }, { "iovec", kPrivate, "", kPublic }, @@ -114,7 +146,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "mcontext_t", kPrivate, "", kPublic }, { "mode_t", kPrivate, "", kPublic }, { "nl_item", kPrivate, "", kPublic }, -@@ -175,8 +175,8 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -195,8 +195,8 @@ const IncludeMapEntry libc_symbol_map[] = { { "optind", kPrivate, "", kPublic }, { "optopt", kPrivate, "", kPublic }, { "pid_t", kPrivate, "", kPublic }, @@ -125,7 +157,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "pthread_attr_t", kPrivate, "", kPublic }, { "pthread_cond_t", kPrivate, "", kPublic }, { "pthread_condattr_t", kPrivate, "", kPublic }, -@@ -187,7 +187,7 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -207,7 +207,7 @@ const IncludeMapEntry libc_symbol_map[] = { { "pthread_rwlock_t", kPrivate, "", kPublic }, { "pthread_rwlockattr_t", kPrivate, "", kPublic }, { "pthread_t", kPrivate, "", kPublic }, @@ -134,7 +166,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "regex_t", kPrivate, "", kPublic }, { "regmatch_t", kPrivate, "", kPublic }, { "regoff_t", kPrivate, "", kPublic }, -@@ -218,51 +218,51 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -238,54 +238,54 @@ const IncludeMapEntry libc_symbol_map[] = { { "SCHED_FIFO", kPrivate, "", kPublic }, { "SCHED_OTHER", kPrivate, "", kPublic }, { "SCHED_RR", kPrivate, "", kPublic }, @@ -167,7 +199,10 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "timer_t", kPrivate, "", kPublic }, - { "timespec", kPrivate, "", kPublic }, + { "timespec", kPrivate, "", kPrivate }, - { "timeval", kPrivate, "", kPublic }, + { "timeval", kPrivate, "", kPublic }, // 'canonical' location for timeval + { "timeval", kPrivate, "", kPublic }, + { "timeval", kPrivate, "", kPublic }, + { "timeval", kPrivate, "", kPublic }, - { "tm", kPrivate, "", kPublic }, + { "tm", kPrivate, "", kPrivate }, { "u_char", kPrivate, "", kPublic }, @@ -212,7 +247,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "IBSHIFT", kPrivate, "", kPublic }, { "MAP_POPULATE", kPrivate, "", kPublic }, { "MAP_POPULATE", kPrivate, "", kPublic }, -@@ -270,22 +270,22 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -293,22 +293,22 @@ const IncludeMapEntry libc_symbol_map[] = { { "MAP_STACK", kPrivate, "", kPublic }, { "MAXHOSTNAMELEN", kPrivate, "", kPublic }, { "MAXHOSTNAMELEN", kPrivate, "", kPublic }, @@ -248,7 +283,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "NULL", kPrivate, "", kPublic }, { "NULL", kPrivate, "", kPublic }, { "NULL", kPrivate, "", kPublic }, -@@ -293,13 +293,13 @@ const IncludeMapEntry libc_symbol_map[] = { +@@ -316,13 +316,13 @@ const IncludeMapEntry libc_symbol_map[] = { { "NULL", kPrivate, "", kPublic }, { "NULL", kPrivate, "", kPublic }, { "NULL", kPrivate, "", kPublic }, @@ -266,10 +301,10 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ + { "NULL", kPrivate, "", kPrivate }, + { "NULL", kPrivate, "", kPrivate }, + { "offsetof", kPrivate, "", kPrivate }, - }; - - // Common kludges for C++ standard libraries -@@ -355,7 +355,7 @@ const IncludeMapEntry libc_include_map[] = { + // Auxiliary vector entry types. + { "AT_BASE", kPrivate, "", kPublic }, + { "AT_BASE_PLATFORM", kPrivate, "", kPublic }, +@@ -409,7 +409,7 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -278,7 +313,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -363,18 +363,18 @@ const IncludeMapEntry libc_include_map[] = { +@@ -417,18 +417,18 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -304,7 +339,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -382,24 +382,24 @@ const IncludeMapEntry libc_include_map[] = { +@@ -436,24 +436,24 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -337,7 +372,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -409,17 +409,17 @@ const IncludeMapEntry libc_include_map[] = { +@@ -463,17 +463,17 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -365,7 +400,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -429,22 +429,22 @@ const IncludeMapEntry libc_include_map[] = { +@@ -483,22 +483,22 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -400,7 +435,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPrivate }, -@@ -459,12 +459,12 @@ const IncludeMapEntry libc_include_map[] = { +@@ -515,12 +515,12 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -413,9 +448,9 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ - { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPrivate }, { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -474,11 +474,11 @@ const IncludeMapEntry libc_include_map[] = { + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, +@@ -532,11 +532,11 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -432,7 +467,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, // Sometimes libc tells you what mapping to do via an '#error': // # error "Never use directly; include instead." -@@ -488,7 +488,7 @@ const IncludeMapEntry libc_include_map[] = { +@@ -546,7 +546,7 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -441,7 +476,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -498,38 +498,38 @@ const IncludeMapEntry libc_include_map[] = { +@@ -556,38 +556,38 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -495,7 +530,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, // Top-level #includes that just forward to another file: -@@ -541,13 +541,13 @@ const IncludeMapEntry libc_include_map[] = { +@@ -599,13 +599,13 @@ const IncludeMapEntry libc_include_map[] = { // on the POSIX.1-2024 list, I just choose the top-level one. { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, @@ -512,7 +547,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, { "", kPrivate, "", kPublic }, -@@ -567,21 +567,21 @@ const IncludeMapEntry libc_include_map[] = { +@@ -625,21 +625,21 @@ const IncludeMapEntry libc_include_map[] = { { "", kPrivate, "", kPrivate }, // I don't know what grep would have found these. I found them // via user report. @@ -539,7 +574,7 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ }; const IncludeMapEntry stdlib_c_include_map[] = { -@@ -600,32 +600,32 @@ const IncludeMapEntry stdlib_c_include_map[] = { +@@ -658,32 +658,32 @@ const IncludeMapEntry stdlib_c_include_map[] = { // https://github.com/cplusplus/draft/blob/c+%2B20/source/lib-intro.tex // // $ curl -s -N https://raw.githubusercontent.com/cplusplus/draft/c%2B%2B20/source/lib-intro.tex | sed -n '/begin{multicolfloattable}.*{headers.cpp.c}/,/end{multicolfloattable}/p' | grep tcode | perl -nle 'm/tcode{}/ && print qq@ { "<$1.h>", kPublic, "", kPublic },@' | sort @@ -548,7 +583,12 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, + { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, @@ -569,12 +609,6 @@ See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_21/ - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, - { "", kPublic, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, diff --git a/ci/test/03_test_script.sh b/ci/test/03_test_script.sh index bfa733b0e5f..7b4d7837d70 100755 --- a/ci/test/03_test_script.sh +++ b/ci/test/03_test_script.sh @@ -224,7 +224,7 @@ if [[ "${RUN_IWYU}" == true ]]; then -Xiwyu --check_also="*/primitives/*.h" \ 2>&1 | tee /tmp/iwyu_ci.out python3 "/include-what-you-use/fix_includes.py" --nosafe_headers < /tmp/iwyu_ci.out - git diff -U1 | ./contrib/devtools/clang-format-diff.py -binary="clang-format-${TIDY_LLVM_V}" -p1 -i -v + git diff -U1 | ./contrib/devtools/clang-format-diff.py -binary="clang-format-${IWYU_LLVM_V}" -p1 -i -v } run_iwyu "compile_commands_iwyu_errors.json" diff --git a/contrib/devtools/iwyu/bitcoin.core.imp b/contrib/devtools/iwyu/bitcoin.core.imp index 960cb05d85a..9b471cb82f2 100644 --- a/contrib/devtools/iwyu/bitcoin.core.imp +++ b/contrib/devtools/iwyu/bitcoin.core.imp @@ -2,17 +2,7 @@ # Compiler intrinsics. # See: https://github.com/include-what-you-use/include-what-you-use/issues/1764. { "include": [ "", "private", "", "public" ] }, + { "include": [ "", "private", "", "public" ] }, { "include": [ "", "private", "", "public" ] }, { "include": [ "", "private", "", "public" ] }, - - # libc symbols. - # See: https://github.com/include-what-you-use/include-what-you-use/issues/1809. - { "symbol": ["AT_HWCAP", "private", "", "public"] }, - { "symbol": ["AT_HWCAP2", "private", "", "public"] }, - - # Workarounds for IWYU issues. - # See: https://github.com/include-what-you-use/include-what-you-use/issues/1616. - { "symbol": ["std::pair", "private", "", "public"] }, - # See: https://github.com/include-what-you-use/include-what-you-use/issues/1863. - { "symbol": ["std::vector", "private", "", "public"] }, ] diff --git a/src/index/base.cpp b/src/index/base.cpp index 851b3cda2dd..6c547680a4b 100644 --- a/src/index/base.cpp +++ b/src/index/base.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/src/kernel/coinstats.cpp b/src/kernel/coinstats.cpp index 4e30a876229..e165d3e212c 100644 --- a/src/kernel/coinstats.cpp +++ b/src/kernel/coinstats.cpp @@ -20,10 +20,10 @@ #include #include +#include #include #include #include -#include namespace kernel {