[Lldb-commits] [clang] [clang-tools-extra] [libcxx] [lldb] [Clang] Make the SizeType, SignedSizeType and PtrdiffType be named sugar types instead of built-in types (PR #143653)

Nathan Chancellor via lldb-commits lldb-commits at lists.llvm.org
Thu Jul 17 19:57:37 PDT 2025


nathanchance wrote:

For what it’s worth, it looks like this introduces a series of `-Wformat` warnings when building the Linux kernel for 32-bit targets, which `typedef size_t` as `unsigned int` in [`include/linux/types.h`](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?h=v6.16-rc6#n61) and [`include/uapi/asm-generic/posix_types.h`](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/posix_types.h?h=v6.16-rc6#n62).

```
net/netfilter/nf_log_syslog.c:102:11: error: format specifies type 'size_t' (aka '__size_t') but the argument has type 'unsigned int' [-Werror,-Wformat]
  101 |                 nf_log_buf_add(m, " INCOMPLETE [%zu bytes]",
      |                                                 ~~~
      |                                                 %u
  102 |                                skb->len - sizeof(_arph));
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~
```

```c
#ifndef _SIZE_T
#define _SIZE_T
typedef __kernel_size_t		size_t;
#endif
```

```c
/*
 * Most 32 bit architectures use "unsigned int" size_t,
 * and all 64 bit architectures use "unsigned long" size_t.
 */
#ifndef __kernel_size_t
#if __BITS_PER_LONG != 64
typedef unsigned int	__kernel_size_t;
typedef int		__kernel_ssize_t;
typedef int		__kernel_ptrdiff_t;
#else
typedef __kernel_ulong_t __kernel_size_t;
typedef __kernel_long_t	__kernel_ssize_t;
typedef __kernel_long_t	__kernel_ptrdiff_t;
#endif
#endif
```

Is this expected?

https://github.com/llvm/llvm-project/pull/143653


More information about the lldb-commits mailing list