git: c8c9324c94df - main - include/stdbit.h: declare size_t, (u)int*_t, and (u)int_least*_t
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 20 Apr 2026 21:01:20 UTC
The branch main has been updated by fuz:
URL: https://cgit.FreeBSD.org/src/commit/?id=c8c9324c94dfd4eeecbcfe4a1d3daa047420d3e5
commit c8c9324c94dfd4eeecbcfe4a1d3daa047420d3e5
Author: Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2026-04-19 12:36:34 +0000
Commit: Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2026-04-20 20:59:54 +0000
include/stdbit.h: declare size_t, (u)int*_t, and (u)int_least*_t
These are required by ISO/IEC 9899:2024 § 7.18.1 ¶ 1 but were forgotten
in my initial work.
The current approach leaks intptr_t, uintptr_t, intmax_t, and uintmax_t
through <sys/_stdint.h>. This could be avoided using a more complicated
approach if desired.
PR: 294131
Fixes: 6296500a85c8474e3ff3fe2f8e4a9d56dd0acd64
Reported by: Collin Funk <collin.funk1@gmail.com>
Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D56515
---
include/stdbit.h | 22 +++++++++++++++++++++-
sys/sys/stdint.h | 3 +++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/include/stdbit.h b/include/stdbit.h
index a529676bed4b..6b9ea02971b0 100644
--- a/include/stdbit.h
+++ b/include/stdbit.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org>
+ * Copyright (c) 2025-2026 Robert Clausecker <fuz@FreeBSD.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -8,6 +8,26 @@
#define __STDC_VERSION_STDBIT_H__ 202311L
#include <sys/cdefs.h>
+#include <sys/_types.h>
+#include <sys/_stdint.h>
+
+#ifndef _SIZE_T_DECLARED
+typedef __size_t size_t;
+#define _SIZE_T_DECLARED
+#endif
+
+#ifndef _INT_LEAST_T_DECLARED
+typedef __int_least8_t int_least8_t;
+typedef __int_least16_t int_least16_t;
+typedef __int_least32_t int_least32_t;
+typedef __int_least64_t int_least64_t;
+
+typedef __uint_least8_t uint_least8_t;
+typedef __uint_least16_t uint_least16_t;
+typedef __uint_least32_t uint_least32_t;
+typedef __uint_least64_t uint_least64_t;
+#define _INT_LEAST_T_DECLARED
+#endif
/* byte order */
#define __STDC_ENDIAN_LITTLE__ __ORDER_LITTLE_ENDIAN__
diff --git a/sys/sys/stdint.h b/sys/sys/stdint.h
index 77f469f3c2a3..dccc5a8e6a6d 100644
--- a/sys/sys/stdint.h
+++ b/sys/sys/stdint.h
@@ -35,6 +35,7 @@
#include <machine/_stdint.h>
#include <sys/_stdint.h>
+#ifndef _INT_LEAST_T_DECLARED
typedef __int_least8_t int_least8_t;
typedef __int_least16_t int_least16_t;
typedef __int_least32_t int_least32_t;
@@ -44,6 +45,8 @@ typedef __uint_least8_t uint_least8_t;
typedef __uint_least16_t uint_least16_t;
typedef __uint_least32_t uint_least32_t;
typedef __uint_least64_t uint_least64_t;
+#define _INT_LEAST_T_DECLARED
+#endif
typedef __int_fast8_t int_fast8_t;
typedef __int_fast16_t int_fast16_t;