diff --git a/ci/test/00_setup_env_native_iwyu.sh b/ci/test/00_setup_env_native_iwyu.sh index 14c367bb31c..e92cb4fe676 100755 --- a/ci/test/00_setup_env_native_iwyu.sh +++ b/ci/test/00_setup_env_native_iwyu.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:26.04" # To build codegen, CMake must be 3.31 or newer. export CONTAINER_NAME=ci_native_iwyu -export IWYU_LLVM_V="22" +export IWYU_LLVM_V="23" 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 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 diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 7b63a4d09ae..76228e7bdc8 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -105,7 +105,6 @@ 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_"${IWYU_LLVM_V}" /include-what-you-use pushd /include-what-you-use patch -p1 < "${BASE_ROOT_DIR}/ci/test/01_iwyu.patch" - patch -p1 < "${BASE_ROOT_DIR}/ci/test/02_iwyu_hash.patch" popd 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" diff --git a/ci/test/01_iwyu.patch b/ci/test/01_iwyu.patch index 794bb74f587..83ea2d11b0c 100644 --- a/ci/test/01_iwyu.patch +++ b/ci/test/01_iwyu.patch @@ -12,623 +12,3 @@ See: https://en.cppreference.com/w/cpp/preprocessor/include.html. return "<" + include_name + ">"; } return "\"" + include_name + "\""; - - -Prefer C++ headers over C counterparts. -See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_22/iwyu_include_picker.cc#L645-L687. - ---- a/iwyu_include_picker.cc -+++ b/iwyu_include_picker.cc -@@ -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 }, -- { "abort", kPrivate, "", kPublic }, -+ { "abort", kPrivate, "", kPrivate }, - { "aiocb", kPrivate, "", kPublic }, - { "blkcnt_t", kPrivate, "", kPublic }, - { "blksize_t", kPrivate, "", kPublic }, - { "cc_t", kPrivate, "", kPublic }, -- { "clock_t", kPrivate, "", kPublic }, -+ { "clock_t", kPrivate, "", kPrivate }, - { "clock_t", kPrivate, "", kPublic }, - { "clockid_t", kPrivate, "", kPublic }, -- { "ctermid", kPrivate, "", kPublic }, -+ { "ctermid", kPrivate, "", kPrivate }, - { "daddr_t", kPrivate, "", kPublic }, - { "dev_t", kPrivate, "", kPublic }, -- { "div_t", kPrivate, "", kPublic }, -- { "double_t", kPrivate, "", kPublic }, -- { "error_t", kPrivate, "", kPublic }, -+ { "div_t", kPrivate, "", kPrivate }, -+ { "double_t", kPrivate, "", kPrivate }, -+ { "error_t", kPrivate, "", kPrivate }, - { "error_t", kPrivate, "", kPublic }, - { "error_t", kPrivate, "", kPublic }, - { "FD_CLR", kPrivate, "", kPublic }, -@@ -126,10 +126,10 @@ const IncludeMapEntry libc_symbol_map[] = { - { "fd_set", kPrivate, "", kPublic }, - { "FD_SETSIZE", kPrivate, "", kPublic }, - { "FD_ZERO", kPrivate, "", kPublic }, -- { "fenv_t", kPrivate, "", kPublic }, -- { "fexcept_t", kPrivate, "", kPublic }, -- { "FILE", kPrivate, "", kPublic }, -- { "float_t", kPrivate, "", kPublic }, -+ { "fenv_t", kPrivate, "", kPrivate }, -+ { "fexcept_t", kPrivate, "", kPrivate }, -+ { "FILE", kPrivate, "", kPrivate }, -+ { "float_t", kPrivate, "", kPrivate }, - { "fsblkcnt_t", kPrivate, "", kPublic }, - { "fsfilcnt_t", kPrivate, "", kPublic }, - { "getopt", kPrivate, "", kPublic }, -@@ -139,47 +139,47 @@ const IncludeMapEntry libc_symbol_map[] = { - { "in_addr_t", kPrivate, "", kPublic }, - { "in_port_t", kPrivate, "", kPublic }, - { "id_t", kPrivate, "", kPublic }, -- { "imaxdiv_t", kPrivate, "", kPublic }, -- { "intmax_t", kPrivate, "", kPublic }, -- { "uintmax_t", kPrivate, "", kPublic }, -+ { "imaxdiv_t", kPrivate, "", kPrivate }, -+ { "intmax_t", kPrivate, "", kPrivate }, -+ { "uintmax_t", kPrivate, "", kPrivate }, - { "ino64_t", kPrivate, "", kPublic }, - { "ino_t", kPrivate, "", kPublic }, -- { "int8_t", kPrivate, "", kPublic }, -- { "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 }, -- { "itimerspec", kPrivate, "", kPublic }, -+ { "itimerspec", kPrivate, "", kPrivate }, - { "key_t", kPrivate, "", kPublic }, -- { "L_ctermid", kPrivate, "", kPublic }, -- { "lconv", kPrivate, "", kPublic }, -- { "ldiv_t", kPrivate, "", kPublic }, -- { "lldiv_t", kPrivate, "", kPublic }, -- { "locale_t", kPrivate, "", kPublic }, -- { "max_align_t", kPrivate, "", kPublic }, -- { "mbstate_t", kPrivate, "", kPublic }, -+ { "L_ctermid", kPrivate, "", kPrivate }, -+ { "lconv", kPrivate, "", kPrivate }, -+ { "ldiv_t", kPrivate, "", kPrivate }, -+ { "lldiv_t", kPrivate, "", kPrivate }, -+ { "locale_t", kPrivate, "", kPrivate }, -+ { "max_align_t", kPrivate, "", kPrivate }, -+ { "mbstate_t", kPrivate, "", kPrivate }, - { "mcontext_t", kPrivate, "", kPublic }, - { "mode_t", kPrivate, "", kPublic }, - { "nl_item", kPrivate, "", kPublic }, -@@ -195,8 +195,8 @@ const IncludeMapEntry libc_symbol_map[] = { - { "optind", kPrivate, "", kPublic }, - { "optopt", kPrivate, "", kPublic }, - { "pid_t", kPrivate, "", kPublic }, -- { "posix_memalign", kPrivate, "", kPublic }, -- { "printf", kPrivate, "", kPublic }, -+ { "posix_memalign", kPrivate, "", kPrivate }, -+ { "printf", kPrivate, "", kPrivate }, - { "pthread_attr_t", kPrivate, "", kPublic }, - { "pthread_cond_t", kPrivate, "", kPublic }, - { "pthread_condattr_t", kPrivate, "", kPublic }, -@@ -207,7 +207,7 @@ const IncludeMapEntry libc_symbol_map[] = { - { "pthread_rwlock_t", kPrivate, "", kPublic }, - { "pthread_rwlockattr_t", kPrivate, "", kPublic }, - { "pthread_t", kPrivate, "", kPublic }, -- { "ptrdiff_t", kPrivate, "", kPublic }, -+ { "ptrdiff_t", kPrivate, "", kPrivate }, - { "regex_t", kPrivate, "", kPublic }, - { "regmatch_t", kPrivate, "", kPublic }, - { "regoff_t", kPrivate, "", kPublic }, -@@ -238,54 +238,54 @@ const IncludeMapEntry libc_symbol_map[] = { - { "SCHED_FIFO", kPrivate, "", kPublic }, - { "SCHED_OTHER", kPrivate, "", kPublic }, - { "SCHED_RR", kPrivate, "", kPublic }, -- { "SEEK_CUR", kPrivate, "", kPublic }, -- { "SEEK_END", kPrivate, "", kPublic }, -- { "SEEK_SET", kPrivate, "", kPublic }, -- { "sig_atomic_t", kPrivate, "", kPublic }, -- { "sigevent", kPrivate, "", kPublic }, -- { "siginfo_t", kPrivate, "", kPublic }, -- { "sigset_t", kPrivate, "", kPublic }, -- { "sigval", kPrivate, "", kPublic }, -+ { "SEEK_CUR", kPrivate, "", kPrivate }, -+ { "SEEK_END", kPrivate, "", kPrivate }, -+ { "SEEK_SET", kPrivate, "", kPrivate }, -+ { "sig_atomic_t", kPrivate, "", kPrivate }, -+ { "sigevent", kPrivate, "", kPrivate }, -+ { "siginfo_t", kPrivate, "", kPrivate }, -+ { "sigset_t", kPrivate, "", kPrivate }, -+ { "sigval", kPrivate, "", kPrivate }, - { "sockaddr", kPrivate, "", kPublic }, - { "socklen_t", kPrivate, "", kPublic }, - { "ssize_t", kPrivate, "", kPublic }, -- { "stack_t", kPrivate, "", kPublic }, -+ { "stack_t", kPrivate, "", kPrivate }, - { "stat", kPrivate, "", kPublic }, - { "suseconds_t", kPrivate, "", kPublic }, -- { "time_t", kPrivate, "", kPublic }, -+ { "time_t", kPrivate, "", kPrivate }, - { "time_t", kPrivate, "", kPublic }, - { "timer_t", kPrivate, "", kPublic }, -- { "timespec", kPrivate, "", kPublic }, -+ { "timespec", kPrivate, "", kPrivate }, - { "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 }, - { "ucontext_t", kPrivate, "", kPublic }, - { "uid_t", kPrivate, "", kPublic }, - { "useconds_t", kPrivate, "", kPublic }, -- { "wchar_t", kPrivate, "", kPublic }, -- { "wctrans_t", kPrivate, "", kPublic }, -- { "wctype_t", kPrivate, "", kPublic }, -+ { "wchar_t", kPrivate, "", kPrivate }, -+ { "wctrans_t", kPrivate, "", kPrivate }, -+ { "wctype_t", kPrivate, "", kPrivate }, - { "winsize", kPrivate, "", kPublic }, -- { "wint_t", kPrivate, "", kPublic }, -+ { "wint_t", kPrivate, "", kPrivate }, - // It is unspecified if the cname headers provide ::size_t. - // is the one header which defines NULL but not size_t. -- { "size_t", kPrivate, "", kPublic }, // 'canonical' location for size_t -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -- { "size_t", kPrivate, "", kPublic }, -+ { "size_t", kPrivate, "", kPrivate }, // 'canonical' location for size_t -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, -+ { "size_t", kPrivate, "", kPrivate }, - // Macros that can be defined in more than one file, don't have the - // same __foo_defined guard that other types do, so the grep above - // doesn't discover them. Until I figure out a better way, I just - // add them in by hand as I discover them. -- { "EOF", kPrivate, "", kPublic }, -- { "FILE", kPrivate, "", kPublic }, -+ { "EOF", kPrivate, "", kPrivate }, -+ { "FILE", kPrivate, "", kPrivate }, - { "IBSHIFT", kPrivate, "", kPublic }, - { "MAP_POPULATE", kPrivate, "", kPublic }, - { "MAP_POPULATE", kPrivate, "", kPublic }, -@@ -293,22 +293,22 @@ const IncludeMapEntry libc_symbol_map[] = { - { "MAP_STACK", kPrivate, "", kPublic }, - { "MAXHOSTNAMELEN", kPrivate, "", kPublic }, - { "MAXHOSTNAMELEN", kPrivate, "", kPublic }, -- { "SIGABRT", kPrivate, "", kPublic }, -- { "SIGCHLD", kPrivate, "", kPublic }, -- { "va_arg", kPrivate, "", kPublic }, -- { "va_copy", kPrivate, "", kPublic }, -- { "va_end", kPrivate, "", kPublic }, -- { "va_list", kPrivate, "", kPublic }, -- { "va_start", kPrivate, "", kPublic }, -- { "WEOF", kPrivate, "", kPublic }, -+ { "SIGABRT", kPrivate, "", kPrivate }, -+ { "SIGCHLD", kPrivate, "", kPrivate }, -+ { "va_arg", kPrivate, "", kPrivate }, -+ { "va_copy", kPrivate, "", kPrivate }, -+ { "va_end", kPrivate, "", kPrivate }, -+ { "va_list", kPrivate, "", kPrivate }, -+ { "va_start", kPrivate, "", kPrivate }, -+ { "WEOF", kPrivate, "", kPrivate }, - // These are symbols that could be defined in either stdlib.h or - // malloc.h, but we always want the stdlib location. -- { "malloc", kPrivate, "", kPublic }, -- { "calloc", kPrivate, "", kPublic }, -- { "realloc", kPrivate, "", kPublic }, -- { "free", kPrivate, "", kPublic }, -+ { "malloc", kPrivate, "", kPrivate }, -+ { "calloc", kPrivate, "", kPrivate }, -+ { "realloc", kPrivate, "", kPrivate }, -+ { "free", kPrivate, "", kPrivate }, - // Entries for NULL -- { "NULL", kPrivate, "", kPublic }, // 'canonical' location for NULL -+ { "NULL", kPrivate, "", kPrivate }, // 'canonical' location for NULL - { "NULL", kPrivate, "", kPublic }, - { "NULL", kPrivate, "", kPublic }, - { "NULL", kPrivate, "", kPublic }, -@@ -316,13 +316,13 @@ const IncludeMapEntry libc_symbol_map[] = { - { "NULL", kPrivate, "", kPublic }, - { "NULL", kPrivate, "", kPublic }, - { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "NULL", kPrivate, "", kPublic }, -- { "offsetof", kPrivate, "", kPublic }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "NULL", kPrivate, "", kPrivate }, -+ { "offsetof", kPrivate, "", kPrivate }, - // 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 }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -417,18 +417,18 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -436,24 +436,24 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPrivate }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -463,17 +463,17 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -483,22 +483,22 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPrivate }, -@@ -515,12 +515,12 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -532,11 +532,11 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - // Sometimes libc tells you what mapping to do via an '#error': - // # error "Never use directly; include instead." -@@ -546,7 +546,7 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -556,38 +556,38 @@ const IncludeMapEntry libc_include_map[] = { - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - // Top-level #includes that just forward to another file: -@@ -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 }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -@@ -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. -- { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, // PATH_MAX -+ { "", kPrivate, "", kPrivate }, // PATH_MAX - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - // System headers available on AIX, BSD, Solaris and other Unix systems - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, -- { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPrivate }, - { "", kPrivate, "", kPublic }, - { "", kPrivate, "", kPublic }, - // Exports guaranteed by the C standard -- { "", kPublic, "", kPublic }, -+ { "", kPublic, "", kPublic }, - }; - - 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 -- { "", kPublic, "", kPublic }, -- { "", 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 }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -- { "", kPublic, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, -+ { "", kPrivate, "", kPublic }, - }; - - const char* stdlib_cpp_public_headers[] = { diff --git a/ci/test/02_iwyu_hash.patch b/ci/test/02_iwyu_hash.patch deleted file mode 100644 index 12df7a04ed5..00000000000 --- a/ci/test/02_iwyu_hash.patch +++ /dev/null @@ -1,44 +0,0 @@ -Map std::hash to its providing standard headers. -Backport of https://github.com/include-what-you-use/include-what-you-use/pull/2013 -(commit 52f85e1f4d990f55fc6556d543eb051d79364a16) to the clang_22 release -branch. Drop once the upstream fix lands in the IWYU branch tracked by -ci/test/00_setup_env_native_iwyu.sh. - ---- a/std_symbol_map.inc -+++ b/std_symbol_map.inc -@@ -1054,12 +1054,27 @@ - { "std::has_unique_object_representations_v", kPrivate, "", kPublic }, - { "std::has_virtual_destructor", kPrivate, "", kPublic }, - { "std::has_virtual_destructor_v", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, - { "std::hash>", kPrivate, "", kPublic }, - { "std::hash, :0>>", kPrivate, "", kPublic }, - { "std::hash, :0>>", kPrivate, "", kPublic }, - { "std::hash, :0>>", kPrivate, "", kPublic }, - { "std::hash, :0>>", kPrivate, "", kPublic }, - { "std::hash, :0>>", kPrivate, "", kPublic }, -+{ "std::hash>", kPrivate, "", kPublic }, - { "std::hash>", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, -@@ -1069,6 +1084,7 @@ - { "std::hash>", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, -+{ "std::hash", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, - { "std::hash", kPrivate, "", kPublic }, diff --git a/contrib/devtools/iwyu/bitcoin.core.imp b/contrib/devtools/iwyu/bitcoin.core.imp index ca7e2750896..9b471cb82f2 100644 --- a/contrib/devtools/iwyu/bitcoin.core.imp +++ b/contrib/devtools/iwyu/bitcoin.core.imp @@ -5,8 +5,4 @@ { "include": [ "", "private", "", "public" ] }, { "include": [ "", "private", "", "public" ] }, { "include": [ "", "private", "", "public" ] }, - - # Workaround for IWYU issue. - # See: https://github.com/include-what-you-use/include-what-you-use/issues/2084. - { "symbol": ["std::tuple", "private", "", "public"] }, ] diff --git a/src/bench/ccoins_caching.cpp b/src/bench/ccoins_caching.cpp index ec44e6631dd..b1e573c2436 100644 --- a/src/bench/ccoins_caching.cpp +++ b/src/bench/ccoins_caching.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include diff --git a/src/bench/chacha20.cpp b/src/bench/chacha20.cpp index cc2b57ebbeb..05f7022be8e 100644 --- a/src/bench/chacha20.cpp +++ b/src/bench/chacha20.cpp @@ -5,9 +5,7 @@ #include #include #include -// IWYU incorrectly suggests removing this header. -// See https://github.com/include-what-you-use/include-what-you-use/issues/2014. -#include // IWYU pragma: keep +#include #include #include diff --git a/src/bench/coin_selection.cpp b/src/bench/coin_selection.cpp index 396d21d46bb..aaf3b023bf6 100644 --- a/src/bench/coin_selection.cpp +++ b/src/bench/coin_selection.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/src/bench/index_blockfilter.cpp b/src/bench/index_blockfilter.cpp index a945754f2ce..268951f6613 100644 --- a/src/bench/index_blockfilter.cpp +++ b/src/bench/index_blockfilter.cpp @@ -19,8 +19,10 @@ #include #include #include +#include #include +#include #include #include #include diff --git a/src/bench/lockedpool.cpp b/src/bench/lockedpool.cpp index 0a924a729bf..5983fc88185 100644 --- a/src/bench/lockedpool.cpp +++ b/src/bench/lockedpool.cpp @@ -4,9 +4,7 @@ #include #include -// IWYU incorrectly suggests removing this header. -// See https://github.com/include-what-you-use/include-what-you-use/issues/2014. -#include // IWYU pragma: keep +#include #include #include diff --git a/src/bench/merkle_root.cpp b/src/bench/merkle_root.cpp index d80ddb21d68..161bc1dbef0 100644 --- a/src/bench/merkle_root.cpp +++ b/src/bench/merkle_root.cpp @@ -8,7 +8,6 @@ #include #include -#include #include #include diff --git a/src/bench/parse_hex.cpp b/src/bench/parse_hex.cpp index 846009a3980..2165c1c34df 100644 --- a/src/bench/parse_hex.cpp +++ b/src/bench/parse_hex.cpp @@ -10,7 +10,6 @@ #include #include #include -#include std::string generateHexString(size_t length) { const auto hex_digits = "0123456789ABCDEF"; diff --git a/src/bench/poly1305.cpp b/src/bench/poly1305.cpp index a3d0f94b72c..1dc1e3b9dbe 100644 --- a/src/bench/poly1305.cpp +++ b/src/bench/poly1305.cpp @@ -4,9 +4,7 @@ #include #include -// IWYU incorrectly suggests removing this header. -// See https://github.com/include-what-you-use/include-what-you-use/issues/2014. -#include // IWYU pragma: keep +#include #include #include diff --git a/src/bench/readwriteblock.cpp b/src/bench/readwriteblock.cpp index 984936dbd48..b604aec7d66 100644 --- a/src/bench/readwriteblock.cpp +++ b/src/bench/readwriteblock.cpp @@ -12,12 +12,10 @@ #include #include #include -#include #include #include #include -#include #include static CBlock CreateTestBlock() diff --git a/src/bench/txgraph.cpp b/src/bench/txgraph.cpp index 57081dd9edb..a951e500ae7 100644 --- a/src/bench/txgraph.cpp +++ b/src/bench/txgraph.cpp @@ -9,10 +9,8 @@ #include #include -#include #include #include -#include #include #include #include diff --git a/src/bench/wallet_balance.cpp b/src/bench/wallet_balance.cpp index 76d0fd39cff..02e6b2096f2 100644 --- a/src/bench/wallet_balance.cpp +++ b/src/bench/wallet_balance.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include diff --git a/src/bench/wallet_create_tx.cpp b/src/bench/wallet_create_tx.cpp index b0140910696..5d0b3aacd6a 100644 --- a/src/bench/wallet_create_tx.cpp +++ b/src/bench/wallet_create_tx.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include