From 73f7844cdb1e225099223a355d88da0522d7d69b Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:28:55 +0000 Subject: [PATCH] iwyu: Add patch to prefer C++ headers over C counterparts --- ci/test/01_iwyu.patch | 584 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 584 insertions(+) diff --git a/ci/test/01_iwyu.patch b/ci/test/01_iwyu.patch index f976349bf57..e14316bfb3c 100644 --- a/ci/test/01_iwyu.patch +++ b/ci/test/01_iwyu.patch @@ -12,3 +12,587 @@ 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_21/iwyu_include_picker.cc#L587-L629. + +--- a/iwyu_include_picker.cc ++++ b/iwyu_include_picker.cc +@@ -100,20 +100,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 }, +@@ -122,10 +122,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 }, +@@ -135,31 +135,31 @@ 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 }, +- { "uint8_t", kPrivate, "", kPublic }, +- { "uint16_t", kPrivate, "", kPublic }, +- { "uint32_t", kPrivate, "", kPublic }, +- { "uint64_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 }, ++ { "uint8_t", kPrivate, "", kPrivate }, ++ { "uint16_t", kPrivate, "", kPrivate }, ++ { "uint32_t", kPrivate, "", kPrivate }, ++ { "uint64_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 }, +@@ -175,8 +175,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 }, +@@ -187,7 +187,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 }, +@@ -218,51 +218,51 @@ 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 }, +- { "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 }, +@@ -270,22 +270,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 }, +@@ -293,13 +293,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 }, + }; + + // Common kludges for C++ standard libraries +@@ -355,7 +355,7 @@ const IncludeMapEntry libc_include_map[] = { + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, +- { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPrivate }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, +@@ -363,18 +363,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 }, +@@ -382,24 +382,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 }, +@@ -409,17 +409,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 }, +@@ -429,22 +429,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 }, +@@ -459,12 +459,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 }, +@@ -474,11 +474,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." +@@ -488,7 +488,7 @@ const IncludeMapEntry libc_include_map[] = { + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, +- { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPrivate }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, + { "", kPrivate, "", kPublic }, +@@ -498,38 +498,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: +@@ -541,13 +541,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 }, +@@ -567,21 +567,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 }, ++ { "", kPrivate, "", kPrivate }, + }; + + const IncludeMapEntry stdlib_c_include_map[] = { +@@ -601,31 +601,31 @@ const IncludeMapEntry stdlib_c_include_map[] = { + // + // $ 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 }, +- { "", 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 }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, ++ { "", kPrivate, "", kPublic }, + }; + + const char* stdlib_cpp_public_headers[] = {