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:		6296500a85
Reported by:	Collin Funk <collin.funk1@gmail.com>
Reviewed by:	imp
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D56515
This commit is contained in:
Robert Clausecker
2026-04-19 14:36:34 +02:00
parent 1b8e5c02f5
commit c8c9324c94
2 changed files with 24 additions and 1 deletions
+21 -1
View File
@@ -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__
+3
View File
@@ -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;