[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

cseriildi wrote:

Hi @kadircet,
We noticed you’ve been involved in this area, so we thought this PR might be of 
interest to you.

https://github.com/llvm/llvm-project/pull/144748
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi edited 
https://github.com/llvm/llvm-project/pull/144748
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Update generated include mappings (PR #144751)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi updated 
https://github.com/llvm/llvm-project/pull/144751

From eabf81f66a57e099139a579d1955195055a6f75b Mon Sep 17 00:00:00 2001
From: Ildiko Cseri 
Date: Wed, 18 Jun 2025 12:58:34 +
Subject: [PATCH] [include-cleaner] Update generated include mappings

Update generated `*SymbolMap.inc` files using `gen_std.py` and the latest 
cppreference archive 
(https://github.com/PeterFeicht/cppreference-doc/releases/tag/v20250209).
Move removed but still-needed entries to `*SpecialSymbolMap.inc` files.

Co-authored-by: itislu 
---
 .../Inclusions/Stdlib/CSpecialSymbolMap.inc   | 279 +
 .../Tooling/Inclusions/Stdlib/CSymbolMap.inc  | 290 +-
 .../Inclusions/Stdlib/StdSpecialSymbolMap.inc | 133 +++-
 .../Inclusions/Stdlib/StdSymbolMap.inc| 137 +
 4 files changed, 423 insertions(+), 416 deletions(-)

diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CSpecialSymbolMap.inc 
b/clang/lib/Tooling/Inclusions/Stdlib/CSpecialSymbolMap.inc
index 9902fd4caf018..4e5f2aace7be7 100644
--- a/clang/lib/Tooling/Inclusions/Stdlib/CSpecialSymbolMap.inc
+++ b/clang/lib/Tooling/Inclusions/Stdlib/CSpecialSymbolMap.inc
@@ -26,3 +26,282 @@ SYMBOL(UINT16_C, None, )
 SYMBOL(UINT32_C, None, )
 SYMBOL(UINT64_C, None, )
 SYMBOL(UINTMAX_C, None, )
+
+SYMBOL(ATOMIC_BOOL_LOCK_FREE, None, )
+SYMBOL(ATOMIC_CHAR16_T_LOCK_FREE, None, )
+SYMBOL(ATOMIC_CHAR32_T_LOCK_FREE, None, )
+SYMBOL(ATOMIC_CHAR_LOCK_FREE, None, )
+SYMBOL(ATOMIC_FLAG_INIT, None, )
+SYMBOL(ATOMIC_INT_LOCK_FREE, None, )
+SYMBOL(ATOMIC_LLONG_LOCK_FREE, None, )
+SYMBOL(ATOMIC_LONG_LOGK_FREE, None, )
+SYMBOL(ATOMIC_POINTER_LOCK_FREE, None, )
+SYMBOL(ATOMIC_SHORT_LOCK_FREE, None, )
+SYMBOL(ATOMIC_VAR_INIT, None, )
+SYMBOL(ATOMIC_WCHAR_T_LOCK_FREE, None, )
+SYMBOL(BUFSIZ, None, )
+SYMBOL(CHAR_BIT, None, )
+SYMBOL(CHAR_MAX, None, )
+SYMBOL(CHAR_MIN, None, )
+SYMBOL(CLOCKS_PER_SEC, None, )
+SYMBOL(CMPLX, None, )
+SYMBOL(CMPLXF, None, )
+SYMBOL(CMPLXL, None, )
+SYMBOL(DBL_DECIMAL_DIG, None, )
+SYMBOL(DBL_DIG, None, )
+SYMBOL(DBL_EPSILON, None, )
+SYMBOL(DBL_HAS_SUBNORM, None, )
+SYMBOL(DBL_MANT_DIG, None, )
+SYMBOL(DBL_MAX, None, )
+SYMBOL(DBL_MAX_10_EXP, None, )
+SYMBOL(DBL_MAX_EXP, None, )
+SYMBOL(DBL_MIN, None, )
+SYMBOL(DBL_MIN_10_EXP, None, )
+SYMBOL(DBL_MIN_EXP, None, )
+SYMBOL(DBL_TRUE_MIN, None, )
+SYMBOL(DECIMAL_DIG, None, )
+SYMBOL(EDOM, None, )
+SYMBOL(EILSEQ, None, )
+SYMBOL(EOF, None, )
+SYMBOL(ERANGE, None, )
+SYMBOL(EXIT_FAILURE, None, )
+SYMBOL(EXIT_SUCCESS, None, )
+SYMBOL(FE_ALL_EXCEPT, None, )
+SYMBOL(FE_DFL_ENV, None, )
+SYMBOL(FE_DIVBYZERO, None, )
+SYMBOL(FE_DOWNWARD, None, )
+SYMBOL(FE_INEXACT, None, )
+SYMBOL(FE_INVALID, None, )
+SYMBOL(FE_OVERFLOW, None, )
+SYMBOL(FE_TONEAREST, None, )
+SYMBOL(FE_TOWARDZERO, None, )
+SYMBOL(FE_UNDERFLOW, None, )
+SYMBOL(FE_UPWARD, None, )
+SYMBOL(FILENAME_MAX, None, )
+SYMBOL(FLT_DECIMAL_DIG, None, )
+SYMBOL(FLT_DIG, None, )
+SYMBOL(FLT_EPSILON, None, )
+SYMBOL(FLT_EVAL_METHOD, None, )
+SYMBOL(FLT_HAS_SUBNORM, None, )
+SYMBOL(FLT_MANT_DIG, None, )
+SYMBOL(FLT_MAX, None, )
+SYMBOL(FLT_MAX_10_EXP, None, )
+SYMBOL(FLT_MAX_EXP, None, )
+SYMBOL(FLT_MIN, None, )
+SYMBOL(FLT_MIN_10_EXP, None, )
+SYMBOL(FLT_MIN_EXP, None, )
+SYMBOL(FLT_RADIX, None, )
+SYMBOL(FLT_ROUNDS, None, )
+SYMBOL(FLT_TRUE_MIN, None, )
+SYMBOL(FOPEN_MAX, None, )
+SYMBOL(FP_INFINITE, None, )
+SYMBOL(FP_NAN, None, )
+SYMBOL(FP_NORNAL, None, )
+SYMBOL(FP_SUBNORMAL, None, )
+SYMBOL(FP_ZERO, None, )
+SYMBOL(HUGE_VAL, None, )
+SYMBOL(HUGE_VALF, None, )
+SYMBOL(HUGE_VALL, None, )
+SYMBOL(I, None, )
+SYMBOL(INFINITY, None, )
+SYMBOL(INT16_MAX, None, )
+SYMBOL(INT16_MIN, None, )
+SYMBOL(INT32_MAX, None, )
+SYMBOL(INT32_MIN, None, )
+SYMBOL(INT64_MAX, None, )
+SYMBOL(INT64_MIN, None, )
+SYMBOL(INT8_MAX, None, )
+SYMBOL(INT8_MIN, None, )
+SYMBOL(INTMAX_MAX, None, )
+SYMBOL(INTMAX_MIN, None, )
+SYMBOL(INTPTR_MAX, None, )
+SYMBOL(INTPTR_MIN, None, )
+SYMBOL(INT_FAST16_MAX, None, )
+SYMBOL(INT_FAST16_MIN, None, )
+SYMBOL(INT_FAST32_MAX, None, )
+SYMBOL(INT_FAST32_MIN, None, )
+SYMBOL(INT_FAST64_MAX, None, )
+SYMBOL(INT_FAST64_MIN, None, )
+SYMBOL(INT_FAST8_MAX, None, )
+SYMBOL(INT_FAST8_MIN, None, )
+SYMBOL(INT_LEAST16_MAX, None, )
+SYMBOL(INT_LEAST16_MIN, None, )
+SYMBOL(INT_LEAST32_MAX, None, )
+SYMBOL(INT_LEAST32_MIN, None, )
+SYMBOL(INT_LEAST64_MAX, None, )
+SYMBOL(INT_LEAST64_MIN, None, )
+SYMBOL(INT_LEAST8_MAX, None, )
+SYMBOL(INT_LEAST8_MIN, None, )
+SYMBOL(INT_MAX, None, )
+SYMBOL(INT_MIN, None, )
+SYMBOL(LC_ALL, None, )
+SYMBOL(LC_COLLATE, None, )
+SYMBOL(LC_CTYPE, None, )
+SYMBOL(LC_MONETARY, None, )
+SYMBOL(LC_NUMERIC, None, )
+SYMBOL(LC_TIME, None, )
+SYMBOL(LDBL_DECIMAL_DIG, None, )
+SYMBOL(LDBL_DIG, None, )
+SYMBOL(LDBL_EPSILON, None, )
+SYMBOL(LDBL_HAS_SUBNORM, None, )
+SYMBOL(LDBL_MANT_DIG, None, )
+SYMBOL(LDBL_MAX, None, )
+SYMBOL(LDBL_MAX_10_EXP, None, )
+SYMBOL(LDBL_MAX_EXP, None, )
+SYMBOL(LDBL_MIN, None, )
+SYMBOL(LDBL_MIN_10_EXP, None, )
+SYMBOL(LDBL_MIN_EXP, None, )
+SYMBOL(LDBL_TRU

[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi updated 
https://github.com/llvm/llvm-project/pull/144748

From c4681dfa8da9ba90418525f32a3d1968366174d2 Mon Sep 17 00:00:00 2001
From: Ildiko Cseri 
Date: Wed, 18 Jun 2025 12:58:34 +
Subject: [PATCH] [include-cleaner] Add POSIX symbol mappings

Add POSIX symbol-to-header mappings (e.g., `timeval`, `strsignal`, `signal`, 
`errno`) in new dedicated mapping files to avoid mixing with standard library 
mappings.

Closes several related issues: #64336, #76567, #89844, #120830, #134818.

Co-authored-by: itislu 
---
 .../Inclusions/Stdlib/CPosixSymbolMap.inc | 347 +
 .../Inclusions/Stdlib/CxxPosixSymbolMap.inc   | 458 ++
 .../Inclusions/Stdlib/StandardLibrary.cpp |  12 +
 3 files changed, 817 insertions(+)
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CxxPosixSymbolMap.inc

diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc 
b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
new file mode 100644
index 0..ab967dd193c4c
--- /dev/null
+++ b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
@@ -0,0 +1,347 @@
+//===-- CPosixSymbolMap.inc ---*- C 
-*-===//
+//
+// This is a hand-curated list for C POSIX symbols that cannot be
+// parsed/extracted via the include-mapping tool (gen_std.py).
+//
+//===--===//
+
+// clang-format off
+// prevent breaking  -> 
+
+// errno.h
+SYMBOL(E2BIG, None, )
+SYMBOL(EACCES, None, )
+SYMBOL(EADDRINUSE, None, )
+SYMBOL(EADDRNOTAVAIL, None, )
+SYMBOL(EAFNOSUPPORT, None, )
+SYMBOL(EAGAIN, None, )
+SYMBOL(EALREADY, None, )
+SYMBOL(EBADE, None, )
+SYMBOL(EBADF, None, )
+SYMBOL(EBADFD, None, )
+SYMBOL(EBADMSG, None, )
+SYMBOL(EBADR, None, )
+SYMBOL(EBADRQC, None, )
+SYMBOL(EBADSLT, None, )
+SYMBOL(EBUSY, None, )
+SYMBOL(ECANCELED, None, )
+SYMBOL(ECHILD, None, )
+SYMBOL(ECHRNG, None, )
+SYMBOL(ECOMM, None, )
+SYMBOL(ECONNABORTED, None, )
+SYMBOL(ECONNREFUSED, None, )
+SYMBOL(ECONNRESET, None, )
+SYMBOL(EDEADLK, None, )
+SYMBOL(EDEADLOCK, None, )
+SYMBOL(EDESTADDRREQ, None, )
+SYMBOL(EDQUOT, None, )
+SYMBOL(EEXIST, None, )
+SYMBOL(EFAULT, None, )
+SYMBOL(EFBIG, None, )
+SYMBOL(EHOSTDOWN, None, )
+SYMBOL(EHOSTUNREACH, None, )
+SYMBOL(EHWPOISON, None, )
+SYMBOL(EIDRM, None, )
+SYMBOL(EINPROGRESS, None, )
+SYMBOL(EINTR, None, )
+SYMBOL(EINVAL, None, )
+SYMBOL(EIO, None, )
+SYMBOL(EISCONN, None, )
+SYMBOL(EISDIR, None, )
+SYMBOL(EISNAM, None, )
+SYMBOL(EKEYEXPIRED, None, )
+SYMBOL(EKEYREJECTED, None, )
+SYMBOL(EKEYREVOKED, None, )
+SYMBOL(EL2HLT, None, )
+SYMBOL(EL2NSYNC, None, )
+SYMBOL(EL3HLT, None, )
+SYMBOL(EL3RST, None, )
+SYMBOL(ELIBACC, None, )
+SYMBOL(ELIBBAD, None, )
+SYMBOL(ELIBMAX, None, )
+SYMBOL(ELIBSCN, None, )
+SYMBOL(ELIBEXEC, None, )
+SYMBOL(ELNRNG, None, )
+SYMBOL(ELOOP, None, )
+SYMBOL(EMEDIUMTYPE, None, )
+SYMBOL(EMFILE, None, )
+SYMBOL(EMLINK, None, )
+SYMBOL(EMSGSIZE, None, )
+SYMBOL(EMULTIHOP, None, )
+SYMBOL(ENAMETOOLONG, None, )
+SYMBOL(ENETDOWN, None, )
+SYMBOL(ENETRESET, None, )
+SYMBOL(ENETUNREACH, None, )
+SYMBOL(ENFILE, None, )
+SYMBOL(ENOANO, None, )
+SYMBOL(ENOBUFS, None, )
+SYMBOL(ENODATA, None, )
+SYMBOL(ENODEV, None, )
+SYMBOL(ENOENT, None, )
+SYMBOL(ENOEXEC, None, )
+SYMBOL(ENOKEY, None, )
+SYMBOL(ENOLCK, None, )
+SYMBOL(ENOLINK, None, )
+SYMBOL(ENOMEDIUM, None, )
+SYMBOL(ENOMEM, None, )
+SYMBOL(ENOMSG, None, )
+SYMBOL(ENONET, None, )
+SYMBOL(ENOPKG, None, )
+SYMBOL(ENOPROTOOPT, None, )
+SYMBOL(ENOSPC, None, )
+SYMBOL(ENOSR, None, )
+SYMBOL(ENOSTR, None, )
+SYMBOL(ENOSYS, None, )
+SYMBOL(ENOTBLK, None, )
+SYMBOL(ENOTCONN, None, )
+SYMBOL(ENOTDIR, None, )
+SYMBOL(ENOTEMPTY, None, )
+SYMBOL(ENOTRECOVERABLE, None, )
+SYMBOL(ENOTSOCK, None, )
+SYMBOL(ENOTSUP, None, )
+SYMBOL(ENOTTY, None, )
+SYMBOL(ENOTUNIQ, None, )
+SYMBOL(ENXIO, None, )
+SYMBOL(EOPNOTSUPP, None, )
+SYMBOL(EOVERFLOW, None, )
+SYMBOL(EOWNERDEAD, None, )
+SYMBOL(EPERM, None, )
+SYMBOL(EPFNOSUPPORT, None, )
+SYMBOL(EPIPE, None, )
+SYMBOL(EPROTO, None, )
+SYMBOL(EPROTONOSUPPORT, None, )
+SYMBOL(EPROTOTYPE, None, )
+SYMBOL(EREMCHG, None, )
+SYMBOL(EREMOTE, None, )
+SYMBOL(EREMOTEIO, None, )
+SYMBOL(ERESTART, None, )
+SYMBOL(ERFKILL, None, )
+SYMBOL(EROFS, None, )
+SYMBOL(ESHUTDOWN, None, )
+SYMBOL(ESPIPE, None, )
+SYMBOL(ESOCKTNOSUPPORT, None, )
+SYMBOL(ESRCH, None, )
+SYMBOL(ESTALE, None, )
+SYMBOL(ESTRPIPE, None, )
+SYMBOL(ETIME, None, )
+SYMBOL(ETIMEDOUT, None, )
+SYMBOL(ETOOMANYREFS, None, )
+SYMBOL(ETXTBSY, None, )
+SYMBOL(EUCLEAN, None, )
+SYMBOL(EUNATCH, None, )
+SYMBOL(EUSERS, None, )
+SYMBOL(EWOULDBLOCK, None, )
+SYMBOL(EXDEV, None, )
+SYMBOL(EXFULL, None, )
+
+// limits.h
+SYMBOL(SSIZE_MAX, None, )
+
+// pthread.h
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_barrier_t, None, )
+SYMBOL(pthread_barrier_t, None, )
+SYMBOL(pthread_bar

[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi created 
https://github.com/llvm/llvm-project/pull/144748

### **Summary**

This PR adds more symbol-header mappings that `clang-include-cleaner`, `clangd` 
and `clang-tidy` use to detect symbols that are used but not directly included 
([following the include-what-you-use 
model](https://clangd.llvm.org/guides/include-cleaner)).

* **Add mappings for missing POSIX symbols** that are currently not handled. 
These mappings are placed in new dedicated files to avoid mixing non-standard 
symbols with the ISO C/C++ standard library mappings.

  * Addresses and **closes multiple open issues**:
* Closes https://github.com/llvm/llvm-project/issues/64336 – `timeval`
* Closes https://github.com/llvm/llvm-project/issues/76567 – `strsignal`
* Closes https://github.com/llvm/llvm-project/issues/89844 & closes 
https://github.com/llvm/llvm-project/issues/120830 – `signal`
* Closes https://github.com/llvm/llvm-project/issues/134818 – `errno`

Example diagnostic message from `clangd`:
`No header providing "pthread_t" is directly included (fixes available) - 
clangd(missing-includes)`

---

### **Questions**

We would appreciate input on the following points:

1. **Is the existing proposal in 
https://github.com/llvm/llvm-project/pull/66089 still planned to be completed?**

   * It appears to introduce a more general solution that aligns closely with 
the logic of [IWYU's 
implementation](https://github.com/include-what-you-use/include-what-you-use/blob/master/iwyu_include_picker.cc#L346)
 and could potentially cover both standard and POSIX symbols in a unified way. 
Basically, it maps private headers to public headers, instead of symbols to 
public headers. This might simplify future contributions and extensions.

2. **Is it appropriate to maintain POSIX mappings in separate files**, or 
should we integrate them into the existing mapping files despite them not being 
part of the standard library?

3. **Is it ok to map some POSIX symbols (e.g. `strsignal`) also to C++ headers 
(``), or should they map to C headers (``) only?

Thanks in advance for your time and feedback!

From c4681dfa8da9ba90418525f32a3d1968366174d2 Mon Sep 17 00:00:00 2001
From: Ildiko Cseri 
Date: Wed, 18 Jun 2025 12:58:34 +
Subject: [PATCH] [include-cleaner] Add POSIX symbol mappings

Add POSIX symbol-to-header mappings (e.g., `timeval`, `strsignal`, `signal`, 
`errno`) in new dedicated mapping files to avoid mixing with standard library 
mappings.

Closes several related issues: #64336, #76567, #89844, #120830, #134818.

Co-authored-by: itislu 
---
 .../Inclusions/Stdlib/CPosixSymbolMap.inc | 347 +
 .../Inclusions/Stdlib/CxxPosixSymbolMap.inc   | 458 ++
 .../Inclusions/Stdlib/StandardLibrary.cpp |  12 +
 3 files changed, 817 insertions(+)
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CxxPosixSymbolMap.inc

diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc 
b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
new file mode 100644
index 0..ab967dd193c4c
--- /dev/null
+++ b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
@@ -0,0 +1,347 @@
+//===-- CPosixSymbolMap.inc ---*- C 
-*-===//
+//
+// This is a hand-curated list for C POSIX symbols that cannot be
+// parsed/extracted via the include-mapping tool (gen_std.py).
+//
+//===--===//
+
+// clang-format off
+// prevent breaking  -> 
+
+// errno.h
+SYMBOL(E2BIG, None, )
+SYMBOL(EACCES, None, )
+SYMBOL(EADDRINUSE, None, )
+SYMBOL(EADDRNOTAVAIL, None, )
+SYMBOL(EAFNOSUPPORT, None, )
+SYMBOL(EAGAIN, None, )
+SYMBOL(EALREADY, None, )
+SYMBOL(EBADE, None, )
+SYMBOL(EBADF, None, )
+SYMBOL(EBADFD, None, )
+SYMBOL(EBADMSG, None, )
+SYMBOL(EBADR, None, )
+SYMBOL(EBADRQC, None, )
+SYMBOL(EBADSLT, None, )
+SYMBOL(EBUSY, None, )
+SYMBOL(ECANCELED, None, )
+SYMBOL(ECHILD, None, )
+SYMBOL(ECHRNG, None, )
+SYMBOL(ECOMM, None, )
+SYMBOL(ECONNABORTED, None, )
+SYMBOL(ECONNREFUSED, None, )
+SYMBOL(ECONNRESET, None, )
+SYMBOL(EDEADLK, None, )
+SYMBOL(EDEADLOCK, None, )
+SYMBOL(EDESTADDRREQ, None, )
+SYMBOL(EDQUOT, None, )
+SYMBOL(EEXIST, None, )
+SYMBOL(EFAULT, None, )
+SYMBOL(EFBIG, None, )
+SYMBOL(EHOSTDOWN, None, )
+SYMBOL(EHOSTUNREACH, None, )
+SYMBOL(EHWPOISON, None, )
+SYMBOL(EIDRM, None, )
+SYMBOL(EINPROGRESS, None, )
+SYMBOL(EINTR, None, )
+SYMBOL(EINVAL, None, )
+SYMBOL(EIO, None, )
+SYMBOL(EISCONN, None, )
+SYMBOL(EISDIR, None, )
+SYMBOL(EISNAM, None, )
+SYMBOL(EKEYEXPIRED, None, )
+SYMBOL(EKEYREJECTED, None, )
+SYMBOL(EKEYREVOKED, None, )
+SYMBOL(EL2HLT, None, )
+SYMBOL(EL2NSYNC, None, )
+SYMBOL(EL3HLT, None, )
+SYMBOL(EL3RST, None, )
+SYMBOL(ELIBACC, None, )
+SYMBOL(ELIBBAD, None, )
+SYMBOL(ELIBMAX, None, )
+SYMBOL(ELIBSCN, None, )
+SYMBOL(ELIBEXEC, None, )
+SYMBOL(ELNRNG, None, )
+SYMBOL(ELOOP, No

[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi updated 
https://github.com/llvm/llvm-project/pull/144748

From c4681dfa8da9ba90418525f32a3d1968366174d2 Mon Sep 17 00:00:00 2001
From: Ildiko Cseri 
Date: Wed, 18 Jun 2025 12:58:34 +
Subject: [PATCH] [include-cleaner] Add POSIX symbol mappings

Add POSIX symbol-to-header mappings (e.g., `timeval`, `strsignal`, `signal`, 
`errno`) in new dedicated mapping files to avoid mixing with standard library 
mappings.

Closes several related issues: #64336, #76567, #89844, #120830, #134818.

Co-authored-by: itislu 
---
 .../Inclusions/Stdlib/CPosixSymbolMap.inc | 347 +
 .../Inclusions/Stdlib/CxxPosixSymbolMap.inc   | 458 ++
 .../Inclusions/Stdlib/StandardLibrary.cpp |  12 +
 3 files changed, 817 insertions(+)
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
 create mode 100644 clang/lib/Tooling/Inclusions/Stdlib/CxxPosixSymbolMap.inc

diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc 
b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
new file mode 100644
index 0..ab967dd193c4c
--- /dev/null
+++ b/clang/lib/Tooling/Inclusions/Stdlib/CPosixSymbolMap.inc
@@ -0,0 +1,347 @@
+//===-- CPosixSymbolMap.inc ---*- C 
-*-===//
+//
+// This is a hand-curated list for C POSIX symbols that cannot be
+// parsed/extracted via the include-mapping tool (gen_std.py).
+//
+//===--===//
+
+// clang-format off
+// prevent breaking  -> 
+
+// errno.h
+SYMBOL(E2BIG, None, )
+SYMBOL(EACCES, None, )
+SYMBOL(EADDRINUSE, None, )
+SYMBOL(EADDRNOTAVAIL, None, )
+SYMBOL(EAFNOSUPPORT, None, )
+SYMBOL(EAGAIN, None, )
+SYMBOL(EALREADY, None, )
+SYMBOL(EBADE, None, )
+SYMBOL(EBADF, None, )
+SYMBOL(EBADFD, None, )
+SYMBOL(EBADMSG, None, )
+SYMBOL(EBADR, None, )
+SYMBOL(EBADRQC, None, )
+SYMBOL(EBADSLT, None, )
+SYMBOL(EBUSY, None, )
+SYMBOL(ECANCELED, None, )
+SYMBOL(ECHILD, None, )
+SYMBOL(ECHRNG, None, )
+SYMBOL(ECOMM, None, )
+SYMBOL(ECONNABORTED, None, )
+SYMBOL(ECONNREFUSED, None, )
+SYMBOL(ECONNRESET, None, )
+SYMBOL(EDEADLK, None, )
+SYMBOL(EDEADLOCK, None, )
+SYMBOL(EDESTADDRREQ, None, )
+SYMBOL(EDQUOT, None, )
+SYMBOL(EEXIST, None, )
+SYMBOL(EFAULT, None, )
+SYMBOL(EFBIG, None, )
+SYMBOL(EHOSTDOWN, None, )
+SYMBOL(EHOSTUNREACH, None, )
+SYMBOL(EHWPOISON, None, )
+SYMBOL(EIDRM, None, )
+SYMBOL(EINPROGRESS, None, )
+SYMBOL(EINTR, None, )
+SYMBOL(EINVAL, None, )
+SYMBOL(EIO, None, )
+SYMBOL(EISCONN, None, )
+SYMBOL(EISDIR, None, )
+SYMBOL(EISNAM, None, )
+SYMBOL(EKEYEXPIRED, None, )
+SYMBOL(EKEYREJECTED, None, )
+SYMBOL(EKEYREVOKED, None, )
+SYMBOL(EL2HLT, None, )
+SYMBOL(EL2NSYNC, None, )
+SYMBOL(EL3HLT, None, )
+SYMBOL(EL3RST, None, )
+SYMBOL(ELIBACC, None, )
+SYMBOL(ELIBBAD, None, )
+SYMBOL(ELIBMAX, None, )
+SYMBOL(ELIBSCN, None, )
+SYMBOL(ELIBEXEC, None, )
+SYMBOL(ELNRNG, None, )
+SYMBOL(ELOOP, None, )
+SYMBOL(EMEDIUMTYPE, None, )
+SYMBOL(EMFILE, None, )
+SYMBOL(EMLINK, None, )
+SYMBOL(EMSGSIZE, None, )
+SYMBOL(EMULTIHOP, None, )
+SYMBOL(ENAMETOOLONG, None, )
+SYMBOL(ENETDOWN, None, )
+SYMBOL(ENETRESET, None, )
+SYMBOL(ENETUNREACH, None, )
+SYMBOL(ENFILE, None, )
+SYMBOL(ENOANO, None, )
+SYMBOL(ENOBUFS, None, )
+SYMBOL(ENODATA, None, )
+SYMBOL(ENODEV, None, )
+SYMBOL(ENOENT, None, )
+SYMBOL(ENOEXEC, None, )
+SYMBOL(ENOKEY, None, )
+SYMBOL(ENOLCK, None, )
+SYMBOL(ENOLINK, None, )
+SYMBOL(ENOMEDIUM, None, )
+SYMBOL(ENOMEM, None, )
+SYMBOL(ENOMSG, None, )
+SYMBOL(ENONET, None, )
+SYMBOL(ENOPKG, None, )
+SYMBOL(ENOPROTOOPT, None, )
+SYMBOL(ENOSPC, None, )
+SYMBOL(ENOSR, None, )
+SYMBOL(ENOSTR, None, )
+SYMBOL(ENOSYS, None, )
+SYMBOL(ENOTBLK, None, )
+SYMBOL(ENOTCONN, None, )
+SYMBOL(ENOTDIR, None, )
+SYMBOL(ENOTEMPTY, None, )
+SYMBOL(ENOTRECOVERABLE, None, )
+SYMBOL(ENOTSOCK, None, )
+SYMBOL(ENOTSUP, None, )
+SYMBOL(ENOTTY, None, )
+SYMBOL(ENOTUNIQ, None, )
+SYMBOL(ENXIO, None, )
+SYMBOL(EOPNOTSUPP, None, )
+SYMBOL(EOVERFLOW, None, )
+SYMBOL(EOWNERDEAD, None, )
+SYMBOL(EPERM, None, )
+SYMBOL(EPFNOSUPPORT, None, )
+SYMBOL(EPIPE, None, )
+SYMBOL(EPROTO, None, )
+SYMBOL(EPROTONOSUPPORT, None, )
+SYMBOL(EPROTOTYPE, None, )
+SYMBOL(EREMCHG, None, )
+SYMBOL(EREMOTE, None, )
+SYMBOL(EREMOTEIO, None, )
+SYMBOL(ERESTART, None, )
+SYMBOL(ERFKILL, None, )
+SYMBOL(EROFS, None, )
+SYMBOL(ESHUTDOWN, None, )
+SYMBOL(ESPIPE, None, )
+SYMBOL(ESOCKTNOSUPPORT, None, )
+SYMBOL(ESRCH, None, )
+SYMBOL(ESTALE, None, )
+SYMBOL(ESTRPIPE, None, )
+SYMBOL(ETIME, None, )
+SYMBOL(ETIMEDOUT, None, )
+SYMBOL(ETOOMANYREFS, None, )
+SYMBOL(ETXTBSY, None, )
+SYMBOL(EUCLEAN, None, )
+SYMBOL(EUNATCH, None, )
+SYMBOL(EUSERS, None, )
+SYMBOL(EWOULDBLOCK, None, )
+SYMBOL(EXDEV, None, )
+SYMBOL(EXFULL, None, )
+
+// limits.h
+SYMBOL(SSIZE_MAX, None, )
+
+// pthread.h
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_attr_t, None, )
+SYMBOL(pthread_barrier_t, None, )
+SYMBOL(pthread_barrier_t, None, )
+SYMBOL(pthread_bar

[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi edited 
https://github.com/llvm/llvm-project/pull/144748
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Update generated include mappings (PR #144751)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi edited 
https://github.com/llvm/llvm-project/pull/144751
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Add POSIX symbol mappings (PR #144748)

2025-06-18 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi edited 
https://github.com/llvm/llvm-project/pull/144748
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Support multi-header symbols in mapping generator (PR #147720)

2025-07-09 Thread Ildikó Cseri via cfe-commits

cseriildi wrote:

Hi @kadircet,
this might be of interest to you.

https://github.com/llvm/llvm-project/pull/147720
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Support multi-header symbols in mapping generator (PR #147720)

2025-07-09 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi edited 
https://github.com/llvm/llvm-project/pull/147720
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [include-cleaner] Update generated include mappings (PR #144751)

2025-07-09 Thread Ildikó Cseri via cfe-commits

https://github.com/cseriildi closed 
https://github.com/llvm/llvm-project/pull/144751
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits