git: ab420c44bc7c - main - libc: Add PRIb*, PRIB*, and SCNb* macros as per C23
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 02 Sep 2026 15:00:26 UTC
The branch main has been updated by kfv:
URL: https://cgit.FreeBSD.org/src/commit/?id=ab420c44bc7c45bf344cb03b289e60109f57aaee
commit ab420c44bc7c45bf344cb03b289e60109f57aaee
Author: Faraz Vahedi <kfv@FreeBSD.org>
AuthorDate: 2026-09-02 14:56:58 +0000
Commit: Faraz Vahedi <kfv@FreeBSD.org>
CommitDate: 2026-09-02 14:56:58 +0000
libc: Add PRIb*, PRIB*, and SCNb* macros as per C23
Reviewed by: fuz
Approved by: fuz (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D59293
---
sys/arm/include/_inttypes.h | 45 +++++++++++++++++++++++++++++++++++++++++
sys/arm64/include/_inttypes.h | 45 +++++++++++++++++++++++++++++++++++++++++
sys/powerpc/include/_inttypes.h | 45 +++++++++++++++++++++++++++++++++++++++++
sys/riscv/include/_inttypes.h | 45 +++++++++++++++++++++++++++++++++++++++++
sys/x86/include/_inttypes.h | 45 +++++++++++++++++++++++++++++++++++++++++
5 files changed, 225 insertions(+)
diff --git a/sys/arm/include/_inttypes.h b/sys/arm/include/_inttypes.h
index ab51edc73ab6..8ccc9dd2893d 100644
--- a/sys/arm/include/_inttypes.h
+++ b/sys/arm/include/_inttypes.h
@@ -132,6 +132,36 @@
#define PRIXMAX "jX" /* uintmax_t */
#define PRIXPTR "X" /* uintptr_t */
+#define PRIb8 "b" /* uint8_t */
+#define PRIb16 "b" /* uint16_t */
+#define PRIb32 "b" /* uint32_t */
+#define PRIb64 "llb" /* uint64_t */
+#define PRIbLEAST8 "b" /* uint_least8_t */
+#define PRIbLEAST16 "b" /* uint_least16_t */
+#define PRIbLEAST32 "b" /* uint_least32_t */
+#define PRIbLEAST64 "llb" /* uint_least64_t */
+#define PRIbFAST8 "b" /* uint_fast8_t */
+#define PRIbFAST16 "b" /* uint_fast16_t */
+#define PRIbFAST32 "b" /* uint_fast32_t */
+#define PRIbFAST64 "llb" /* uint_fast64_t */
+#define PRIbMAX "jb" /* uintmax_t */
+#define PRIbPTR "b" /* uintptr_t */
+
+#define PRIB8 "B" /* uint8_t */
+#define PRIB16 "B" /* uint16_t */
+#define PRIB32 "B" /* uint32_t */
+#define PRIB64 "llB" /* uint64_t */
+#define PRIBLEAST8 "B" /* uint_least8_t */
+#define PRIBLEAST16 "B" /* uint_least16_t */
+#define PRIBLEAST32 "B" /* uint_least32_t */
+#define PRIBLEAST64 "llB" /* uint_least64_t */
+#define PRIBFAST8 "B" /* uint_fast8_t */
+#define PRIBFAST16 "B" /* uint_fast16_t */
+#define PRIBFAST32 "B" /* uint_fast32_t */
+#define PRIBFAST64 "llB" /* uint_fast64_t */
+#define PRIBMAX "jB" /* uintmax_t */
+#define PRIBPTR "B" /* uintptr_t */
+
/* fscanf(3) macros for signed integers. */
#define SCNd8 "hhd" /* int8_t */
@@ -211,4 +241,19 @@
#define SCNxMAX "jx" /* uintmax_t */
#define SCNxPTR "x" /* uintptr_t */
+#define SCNb8 "hhb" /* uint8_t */
+#define SCNb16 "hb" /* uint16_t */
+#define SCNb32 "b" /* uint32_t */
+#define SCNb64 "llb" /* uint64_t */
+#define SCNbLEAST8 "hhb" /* uint_least8_t */
+#define SCNbLEAST16 "hb" /* uint_least16_t */
+#define SCNbLEAST32 "b" /* uint_least32_t */
+#define SCNbLEAST64 "llb" /* uint_least64_t */
+#define SCNbFAST8 "b" /* uint_fast8_t */
+#define SCNbFAST16 "b" /* uint_fast16_t */
+#define SCNbFAST32 "b" /* uint_fast32_t */
+#define SCNbFAST64 "llb" /* uint_fast64_t */
+#define SCNbMAX "jb" /* uintmax_t */
+#define SCNbPTR "b" /* uintptr_t */
+
#endif /* !_MACHINE_INTTYPES_H_ */
diff --git a/sys/arm64/include/_inttypes.h b/sys/arm64/include/_inttypes.h
index 67ae82fbf031..1df86d833793 100644
--- a/sys/arm64/include/_inttypes.h
+++ b/sys/arm64/include/_inttypes.h
@@ -134,6 +134,36 @@
#define PRIXMAX "jX" /* uintmax_t */
#define PRIXPTR "lX" /* uintptr_t */
+#define PRIb8 "b" /* uint8_t */
+#define PRIb16 "b" /* uint16_t */
+#define PRIb32 "b" /* uint32_t */
+#define PRIb64 "lb" /* uint64_t */
+#define PRIbLEAST8 "b" /* uint_least8_t */
+#define PRIbLEAST16 "b" /* uint_least16_t */
+#define PRIbLEAST32 "b" /* uint_least32_t */
+#define PRIbLEAST64 "lb" /* uint_least64_t */
+#define PRIbFAST8 "b" /* uint_fast8_t */
+#define PRIbFAST16 "b" /* uint_fast16_t */
+#define PRIbFAST32 "b" /* uint_fast32_t */
+#define PRIbFAST64 "lb" /* uint_fast64_t */
+#define PRIbMAX "jb" /* uintmax_t */
+#define PRIbPTR "lb" /* uintptr_t */
+
+#define PRIB8 "B" /* uint8_t */
+#define PRIB16 "B" /* uint16_t */
+#define PRIB32 "B" /* uint32_t */
+#define PRIB64 "lB" /* uint64_t */
+#define PRIBLEAST8 "B" /* uint_least8_t */
+#define PRIBLEAST16 "B" /* uint_least16_t */
+#define PRIBLEAST32 "B" /* uint_least32_t */
+#define PRIBLEAST64 "lB" /* uint_least64_t */
+#define PRIBFAST8 "B" /* uint_fast8_t */
+#define PRIBFAST16 "B" /* uint_fast16_t */
+#define PRIBFAST32 "B" /* uint_fast32_t */
+#define PRIBFAST64 "lB" /* uint_fast64_t */
+#define PRIBMAX "jB" /* uintmax_t */
+#define PRIBPTR "lB" /* uintptr_t */
+
/* fscanf(3) macros for signed integers. */
#define SCNd8 "hhd" /* int8_t */
@@ -213,6 +243,21 @@
#define SCNxMAX "jx" /* uintmax_t */
#define SCNxPTR "lx" /* uintptr_t */
+#define SCNb8 "hhb" /* uint8_t */
+#define SCNb16 "hb" /* uint16_t */
+#define SCNb32 "b" /* uint32_t */
+#define SCNb64 "lb" /* uint64_t */
+#define SCNbLEAST8 "hhb" /* uint_least8_t */
+#define SCNbLEAST16 "hb" /* uint_least16_t */
+#define SCNbLEAST32 "b" /* uint_least32_t */
+#define SCNbLEAST64 "lb" /* uint_least64_t */
+#define SCNbFAST8 "b" /* uint_fast8_t */
+#define SCNbFAST16 "b" /* uint_fast16_t */
+#define SCNbFAST32 "b" /* uint_fast32_t */
+#define SCNbFAST64 "lb" /* uint_fast64_t */
+#define SCNbMAX "jb" /* uintmax_t */
+#define SCNbPTR "lb" /* uintptr_t */
+
#endif /* !_MACHINE__INTTYPES_H_ */
#endif /* !__arm__ */
diff --git a/sys/powerpc/include/_inttypes.h b/sys/powerpc/include/_inttypes.h
index 4d1b52da6cea..f07f20033c2c 100644
--- a/sys/powerpc/include/_inttypes.h
+++ b/sys/powerpc/include/_inttypes.h
@@ -140,6 +140,36 @@
#define PRIXMAX "jX" /* uintmax_t */
#define PRIXPTR __PRIptr"X" /* uintptr_t */
+#define PRIb8 "b" /* uint8_t */
+#define PRIb16 "b" /* uint16_t */
+#define PRIb32 "b" /* uint32_t */
+#define PRIb64 __PRI64"b" /* uint64_t */
+#define PRIbLEAST8 "b" /* uint_least8_t */
+#define PRIbLEAST16 "b" /* uint_least16_t */
+#define PRIbLEAST32 "b" /* uint_least32_t */
+#define PRIbLEAST64 __PRI64"b" /* uint_least64_t */
+#define PRIbFAST8 "b" /* uint_fast8_t */
+#define PRIbFAST16 "b" /* uint_fast16_t */
+#define PRIbFAST32 "b" /* uint_fast32_t */
+#define PRIbFAST64 __PRI64"b" /* uint_fast64_t */
+#define PRIbMAX "jb" /* uintmax_t */
+#define PRIbPTR __PRIptr"b" /* uintptr_t */
+
+#define PRIB8 "B" /* uint8_t */
+#define PRIB16 "B" /* uint16_t */
+#define PRIB32 "B" /* uint32_t */
+#define PRIB64 __PRI64"B" /* uint64_t */
+#define PRIBLEAST8 "B" /* uint_least8_t */
+#define PRIBLEAST16 "B" /* uint_least16_t */
+#define PRIBLEAST32 "B" /* uint_least32_t */
+#define PRIBLEAST64 __PRI64"B" /* uint_least64_t */
+#define PRIBFAST8 "B" /* uint_fast8_t */
+#define PRIBFAST16 "B" /* uint_fast16_t */
+#define PRIBFAST32 "B" /* uint_fast32_t */
+#define PRIBFAST64 __PRI64"B" /* uint_fast64_t */
+#define PRIBMAX "jB" /* uintmax_t */
+#define PRIBPTR __PRIptr"B" /* uintptr_t */
+
/* fscanf(3) macros for signed integers. */
#define SCNd8 "hhd" /* int8_t */
@@ -219,4 +249,19 @@
#define SCNxMAX "jx" /* uintmax_t */
#define SCNxPTR __PRIptr"x" /* uintptr_t */
+#define SCNb8 "hhb" /* uint8_t */
+#define SCNb16 "hb" /* uint16_t */
+#define SCNb32 "b" /* uint32_t */
+#define SCNb64 __PRI64"b" /* uint64_t */
+#define SCNbLEAST8 "hhb" /* uint_least8_t */
+#define SCNbLEAST16 "hb" /* uint_least16_t */
+#define SCNbLEAST32 "b" /* uint_least32_t */
+#define SCNbLEAST64 __PRI64"b" /* uint_least64_t */
+#define SCNbFAST8 "b" /* uint_fast8_t */
+#define SCNbFAST16 "b" /* uint_fast16_t */
+#define SCNbFAST32 "b" /* uint_fast32_t */
+#define SCNbFAST64 __PRI64"b" /* uint_fast64_t */
+#define SCNbMAX "jb" /* uintmax_t */
+#define SCNbPTR __PRIptr"b" /* uintptr_t */
+
#endif /* !_MACHINE_INTTYPES_H_ */
diff --git a/sys/riscv/include/_inttypes.h b/sys/riscv/include/_inttypes.h
index fb2bb14e33a3..d001261ba550 100644
--- a/sys/riscv/include/_inttypes.h
+++ b/sys/riscv/include/_inttypes.h
@@ -130,6 +130,36 @@
#define PRIXMAX "jX" /* uintmax_t */
#define PRIXPTR "lX" /* uintptr_t */
+#define PRIb8 "b" /* uint8_t */
+#define PRIb16 "b" /* uint16_t */
+#define PRIb32 "b" /* uint32_t */
+#define PRIb64 "lb" /* uint64_t */
+#define PRIbLEAST8 "b" /* uint_least8_t */
+#define PRIbLEAST16 "b" /* uint_least16_t */
+#define PRIbLEAST32 "b" /* uint_least32_t */
+#define PRIbLEAST64 "lb" /* uint_least64_t */
+#define PRIbFAST8 "b" /* uint_fast8_t */
+#define PRIbFAST16 "b" /* uint_fast16_t */
+#define PRIbFAST32 "b" /* uint_fast32_t */
+#define PRIbFAST64 "lb" /* uint_fast64_t */
+#define PRIbMAX "jb" /* uintmax_t */
+#define PRIbPTR "lb" /* uintptr_t */
+
+#define PRIB8 "B" /* uint8_t */
+#define PRIB16 "B" /* uint16_t */
+#define PRIB32 "B" /* uint32_t */
+#define PRIB64 "lB" /* uint64_t */
+#define PRIBLEAST8 "B" /* uint_least8_t */
+#define PRIBLEAST16 "B" /* uint_least16_t */
+#define PRIBLEAST32 "B" /* uint_least32_t */
+#define PRIBLEAST64 "lB" /* uint_least64_t */
+#define PRIBFAST8 "B" /* uint_fast8_t */
+#define PRIBFAST16 "B" /* uint_fast16_t */
+#define PRIBFAST32 "B" /* uint_fast32_t */
+#define PRIBFAST64 "lB" /* uint_fast64_t */
+#define PRIBMAX "jB" /* uintmax_t */
+#define PRIBPTR "lB" /* uintptr_t */
+
/* fscanf(3) macros for signed integers. */
#define SCNd8 "hhd" /* int8_t */
@@ -209,4 +239,19 @@
#define SCNxMAX "jx" /* uintmax_t */
#define SCNxPTR "lx" /* uintptr_t */
+#define SCNb8 "hhb" /* uint8_t */
+#define SCNb16 "hb" /* uint16_t */
+#define SCNb32 "b" /* uint32_t */
+#define SCNb64 "lb" /* uint64_t */
+#define SCNbLEAST8 "hhb" /* uint_least8_t */
+#define SCNbLEAST16 "hb" /* uint_least16_t */
+#define SCNbLEAST32 "b" /* uint_least32_t */
+#define SCNbLEAST64 "lb" /* uint_least64_t */
+#define SCNbFAST8 "b" /* uint_fast8_t */
+#define SCNbFAST16 "b" /* uint_fast16_t */
+#define SCNbFAST32 "b" /* uint_fast32_t */
+#define SCNbFAST64 "lb" /* uint_fast64_t */
+#define SCNbMAX "jb" /* uintmax_t */
+#define SCNbPTR "lb" /* uintptr_t */
+
#endif /* !_MACHINE__INTTYPES_H_ */
diff --git a/sys/x86/include/_inttypes.h b/sys/x86/include/_inttypes.h
index 4d1b52da6cea..f07f20033c2c 100644
--- a/sys/x86/include/_inttypes.h
+++ b/sys/x86/include/_inttypes.h
@@ -140,6 +140,36 @@
#define PRIXMAX "jX" /* uintmax_t */
#define PRIXPTR __PRIptr"X" /* uintptr_t */
+#define PRIb8 "b" /* uint8_t */
+#define PRIb16 "b" /* uint16_t */
+#define PRIb32 "b" /* uint32_t */
+#define PRIb64 __PRI64"b" /* uint64_t */
+#define PRIbLEAST8 "b" /* uint_least8_t */
+#define PRIbLEAST16 "b" /* uint_least16_t */
+#define PRIbLEAST32 "b" /* uint_least32_t */
+#define PRIbLEAST64 __PRI64"b" /* uint_least64_t */
+#define PRIbFAST8 "b" /* uint_fast8_t */
+#define PRIbFAST16 "b" /* uint_fast16_t */
+#define PRIbFAST32 "b" /* uint_fast32_t */
+#define PRIbFAST64 __PRI64"b" /* uint_fast64_t */
+#define PRIbMAX "jb" /* uintmax_t */
+#define PRIbPTR __PRIptr"b" /* uintptr_t */
+
+#define PRIB8 "B" /* uint8_t */
+#define PRIB16 "B" /* uint16_t */
+#define PRIB32 "B" /* uint32_t */
+#define PRIB64 __PRI64"B" /* uint64_t */
+#define PRIBLEAST8 "B" /* uint_least8_t */
+#define PRIBLEAST16 "B" /* uint_least16_t */
+#define PRIBLEAST32 "B" /* uint_least32_t */
+#define PRIBLEAST64 __PRI64"B" /* uint_least64_t */
+#define PRIBFAST8 "B" /* uint_fast8_t */
+#define PRIBFAST16 "B" /* uint_fast16_t */
+#define PRIBFAST32 "B" /* uint_fast32_t */
+#define PRIBFAST64 __PRI64"B" /* uint_fast64_t */
+#define PRIBMAX "jB" /* uintmax_t */
+#define PRIBPTR __PRIptr"B" /* uintptr_t */
+
/* fscanf(3) macros for signed integers. */
#define SCNd8 "hhd" /* int8_t */
@@ -219,4 +249,19 @@
#define SCNxMAX "jx" /* uintmax_t */
#define SCNxPTR __PRIptr"x" /* uintptr_t */
+#define SCNb8 "hhb" /* uint8_t */
+#define SCNb16 "hb" /* uint16_t */
+#define SCNb32 "b" /* uint32_t */
+#define SCNb64 __PRI64"b" /* uint64_t */
+#define SCNbLEAST8 "hhb" /* uint_least8_t */
+#define SCNbLEAST16 "hb" /* uint_least16_t */
+#define SCNbLEAST32 "b" /* uint_least32_t */
+#define SCNbLEAST64 __PRI64"b" /* uint_least64_t */
+#define SCNbFAST8 "b" /* uint_fast8_t */
+#define SCNbFAST16 "b" /* uint_fast16_t */
+#define SCNbFAST32 "b" /* uint_fast32_t */
+#define SCNbFAST64 __PRI64"b" /* uint_fast64_t */
+#define SCNbMAX "jb" /* uintmax_t */
+#define SCNbPTR __PRIptr"b" /* uintptr_t */
+
#endif /* !_MACHINE_INTTYPES_H_ */