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:
+21
-1
@@ -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__
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user