1*8feb0f0bSmrg /* Copyright (C) 2008-2020 Free Software Foundation, Inc. 236ac495dSmrg 336ac495dSmrg This file is part of GCC. 436ac495dSmrg 536ac495dSmrg GCC is free software; you can redistribute it and/or modify 636ac495dSmrg it under the terms of the GNU General Public License as published by 736ac495dSmrg the Free Software Foundation; either version 3, or (at your option) 836ac495dSmrg any later version. 936ac495dSmrg 1036ac495dSmrg GCC is distributed in the hope that it will be useful, 1136ac495dSmrg but WITHOUT ANY WARRANTY; without even the implied warranty of 1236ac495dSmrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1336ac495dSmrg GNU General Public License for more details. 1436ac495dSmrg 1536ac495dSmrg Under Section 7 of GPL version 3, you are granted additional 1636ac495dSmrg permissions described in the GCC Runtime Library Exception, version 1736ac495dSmrg 3.1, as published by the Free Software Foundation. 1836ac495dSmrg 1936ac495dSmrg You should have received a copy of the GNU General Public License and 2036ac495dSmrg a copy of the GCC Runtime Library Exception along with this program; 2136ac495dSmrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2236ac495dSmrg <http://www.gnu.org/licenses/>. */ 2336ac495dSmrg 2436ac495dSmrg /* 2536ac495dSmrg * ISO C Standard: 7.18 Integer types <stdint.h> 2636ac495dSmrg */ 2736ac495dSmrg 2836ac495dSmrg #ifndef _GCC_STDINT_H 2936ac495dSmrg #define _GCC_STDINT_H 3036ac495dSmrg 3136ac495dSmrg /* 7.8.1.1 Exact-width integer types */ 3236ac495dSmrg 3336ac495dSmrg #ifdef __INT8_TYPE__ 3436ac495dSmrg typedef __INT8_TYPE__ int8_t; 3536ac495dSmrg #endif 3636ac495dSmrg #ifdef __INT16_TYPE__ 3736ac495dSmrg typedef __INT16_TYPE__ int16_t; 3836ac495dSmrg #endif 3936ac495dSmrg #ifdef __INT32_TYPE__ 4036ac495dSmrg typedef __INT32_TYPE__ int32_t; 4136ac495dSmrg #endif 4236ac495dSmrg #ifdef __INT64_TYPE__ 4336ac495dSmrg typedef __INT64_TYPE__ int64_t; 4436ac495dSmrg #endif 4536ac495dSmrg #ifdef __UINT8_TYPE__ 4636ac495dSmrg typedef __UINT8_TYPE__ uint8_t; 4736ac495dSmrg #endif 4836ac495dSmrg #ifdef __UINT16_TYPE__ 4936ac495dSmrg typedef __UINT16_TYPE__ uint16_t; 5036ac495dSmrg #endif 5136ac495dSmrg #ifdef __UINT32_TYPE__ 5236ac495dSmrg typedef __UINT32_TYPE__ uint32_t; 5336ac495dSmrg #endif 5436ac495dSmrg #ifdef __UINT64_TYPE__ 5536ac495dSmrg typedef __UINT64_TYPE__ uint64_t; 5636ac495dSmrg #endif 5736ac495dSmrg 5836ac495dSmrg /* 7.8.1.2 Minimum-width integer types */ 5936ac495dSmrg 6036ac495dSmrg typedef __INT_LEAST8_TYPE__ int_least8_t; 6136ac495dSmrg typedef __INT_LEAST16_TYPE__ int_least16_t; 6236ac495dSmrg typedef __INT_LEAST32_TYPE__ int_least32_t; 6336ac495dSmrg typedef __INT_LEAST64_TYPE__ int_least64_t; 6436ac495dSmrg typedef __UINT_LEAST8_TYPE__ uint_least8_t; 6536ac495dSmrg typedef __UINT_LEAST16_TYPE__ uint_least16_t; 6636ac495dSmrg typedef __UINT_LEAST32_TYPE__ uint_least32_t; 6736ac495dSmrg typedef __UINT_LEAST64_TYPE__ uint_least64_t; 6836ac495dSmrg 6936ac495dSmrg /* 7.8.1.3 Fastest minimum-width integer types */ 7036ac495dSmrg 7136ac495dSmrg typedef __INT_FAST8_TYPE__ int_fast8_t; 7236ac495dSmrg typedef __INT_FAST16_TYPE__ int_fast16_t; 7336ac495dSmrg typedef __INT_FAST32_TYPE__ int_fast32_t; 7436ac495dSmrg typedef __INT_FAST64_TYPE__ int_fast64_t; 7536ac495dSmrg typedef __UINT_FAST8_TYPE__ uint_fast8_t; 7636ac495dSmrg typedef __UINT_FAST16_TYPE__ uint_fast16_t; 7736ac495dSmrg typedef __UINT_FAST32_TYPE__ uint_fast32_t; 7836ac495dSmrg typedef __UINT_FAST64_TYPE__ uint_fast64_t; 7936ac495dSmrg 8036ac495dSmrg /* 7.8.1.4 Integer types capable of holding object pointers */ 8136ac495dSmrg 8236ac495dSmrg #ifdef __INTPTR_TYPE__ 8336ac495dSmrg typedef __INTPTR_TYPE__ intptr_t; 8436ac495dSmrg #endif 8536ac495dSmrg #ifdef __UINTPTR_TYPE__ 8636ac495dSmrg typedef __UINTPTR_TYPE__ uintptr_t; 8736ac495dSmrg #endif 8836ac495dSmrg 8936ac495dSmrg /* 7.8.1.5 Greatest-width integer types */ 9036ac495dSmrg 9136ac495dSmrg typedef __INTMAX_TYPE__ intmax_t; 9236ac495dSmrg typedef __UINTMAX_TYPE__ uintmax_t; 9336ac495dSmrg 9436ac495dSmrg #if (!defined __cplusplus || __cplusplus >= 201103L \ 9536ac495dSmrg || defined __STDC_LIMIT_MACROS) 9636ac495dSmrg 9736ac495dSmrg /* 7.18.2 Limits of specified-width integer types */ 9836ac495dSmrg 9936ac495dSmrg #ifdef __INT8_MAX__ 10036ac495dSmrg # undef INT8_MAX 10136ac495dSmrg # define INT8_MAX __INT8_MAX__ 10236ac495dSmrg # undef INT8_MIN 10336ac495dSmrg # define INT8_MIN (-INT8_MAX - 1) 10436ac495dSmrg #endif 10536ac495dSmrg #ifdef __UINT8_MAX__ 10636ac495dSmrg # undef UINT8_MAX 10736ac495dSmrg # define UINT8_MAX __UINT8_MAX__ 10836ac495dSmrg #endif 10936ac495dSmrg #ifdef __INT16_MAX__ 11036ac495dSmrg # undef INT16_MAX 11136ac495dSmrg # define INT16_MAX __INT16_MAX__ 11236ac495dSmrg # undef INT16_MIN 11336ac495dSmrg # define INT16_MIN (-INT16_MAX - 1) 11436ac495dSmrg #endif 11536ac495dSmrg #ifdef __UINT16_MAX__ 11636ac495dSmrg # undef UINT16_MAX 11736ac495dSmrg # define UINT16_MAX __UINT16_MAX__ 11836ac495dSmrg #endif 11936ac495dSmrg #ifdef __INT32_MAX__ 12036ac495dSmrg # undef INT32_MAX 12136ac495dSmrg # define INT32_MAX __INT32_MAX__ 12236ac495dSmrg # undef INT32_MIN 12336ac495dSmrg # define INT32_MIN (-INT32_MAX - 1) 12436ac495dSmrg #endif 12536ac495dSmrg #ifdef __UINT32_MAX__ 12636ac495dSmrg # undef UINT32_MAX 12736ac495dSmrg # define UINT32_MAX __UINT32_MAX__ 12836ac495dSmrg #endif 12936ac495dSmrg #ifdef __INT64_MAX__ 13036ac495dSmrg # undef INT64_MAX 13136ac495dSmrg # define INT64_MAX __INT64_MAX__ 13236ac495dSmrg # undef INT64_MIN 13336ac495dSmrg # define INT64_MIN (-INT64_MAX - 1) 13436ac495dSmrg #endif 13536ac495dSmrg #ifdef __UINT64_MAX__ 13636ac495dSmrg # undef UINT64_MAX 13736ac495dSmrg # define UINT64_MAX __UINT64_MAX__ 13836ac495dSmrg #endif 13936ac495dSmrg 14036ac495dSmrg #undef INT_LEAST8_MAX 14136ac495dSmrg #define INT_LEAST8_MAX __INT_LEAST8_MAX__ 14236ac495dSmrg #undef INT_LEAST8_MIN 14336ac495dSmrg #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1) 14436ac495dSmrg #undef UINT_LEAST8_MAX 14536ac495dSmrg #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ 14636ac495dSmrg #undef INT_LEAST16_MAX 14736ac495dSmrg #define INT_LEAST16_MAX __INT_LEAST16_MAX__ 14836ac495dSmrg #undef INT_LEAST16_MIN 14936ac495dSmrg #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1) 15036ac495dSmrg #undef UINT_LEAST16_MAX 15136ac495dSmrg #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ 15236ac495dSmrg #undef INT_LEAST32_MAX 15336ac495dSmrg #define INT_LEAST32_MAX __INT_LEAST32_MAX__ 15436ac495dSmrg #undef INT_LEAST32_MIN 15536ac495dSmrg #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1) 15636ac495dSmrg #undef UINT_LEAST32_MAX 15736ac495dSmrg #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ 15836ac495dSmrg #undef INT_LEAST64_MAX 15936ac495dSmrg #define INT_LEAST64_MAX __INT_LEAST64_MAX__ 16036ac495dSmrg #undef INT_LEAST64_MIN 16136ac495dSmrg #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1) 16236ac495dSmrg #undef UINT_LEAST64_MAX 16336ac495dSmrg #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ 16436ac495dSmrg 16536ac495dSmrg #undef INT_FAST8_MAX 16636ac495dSmrg #define INT_FAST8_MAX __INT_FAST8_MAX__ 16736ac495dSmrg #undef INT_FAST8_MIN 16836ac495dSmrg #define INT_FAST8_MIN (-INT_FAST8_MAX - 1) 16936ac495dSmrg #undef UINT_FAST8_MAX 17036ac495dSmrg #define UINT_FAST8_MAX __UINT_FAST8_MAX__ 17136ac495dSmrg #undef INT_FAST16_MAX 17236ac495dSmrg #define INT_FAST16_MAX __INT_FAST16_MAX__ 17336ac495dSmrg #undef INT_FAST16_MIN 17436ac495dSmrg #define INT_FAST16_MIN (-INT_FAST16_MAX - 1) 17536ac495dSmrg #undef UINT_FAST16_MAX 17636ac495dSmrg #define UINT_FAST16_MAX __UINT_FAST16_MAX__ 17736ac495dSmrg #undef INT_FAST32_MAX 17836ac495dSmrg #define INT_FAST32_MAX __INT_FAST32_MAX__ 17936ac495dSmrg #undef INT_FAST32_MIN 18036ac495dSmrg #define INT_FAST32_MIN (-INT_FAST32_MAX - 1) 18136ac495dSmrg #undef UINT_FAST32_MAX 18236ac495dSmrg #define UINT_FAST32_MAX __UINT_FAST32_MAX__ 18336ac495dSmrg #undef INT_FAST64_MAX 18436ac495dSmrg #define INT_FAST64_MAX __INT_FAST64_MAX__ 18536ac495dSmrg #undef INT_FAST64_MIN 18636ac495dSmrg #define INT_FAST64_MIN (-INT_FAST64_MAX - 1) 18736ac495dSmrg #undef UINT_FAST64_MAX 18836ac495dSmrg #define UINT_FAST64_MAX __UINT_FAST64_MAX__ 18936ac495dSmrg 19036ac495dSmrg #ifdef __INTPTR_MAX__ 19136ac495dSmrg # undef INTPTR_MAX 19236ac495dSmrg # define INTPTR_MAX __INTPTR_MAX__ 19336ac495dSmrg # undef INTPTR_MIN 19436ac495dSmrg # define INTPTR_MIN (-INTPTR_MAX - 1) 19536ac495dSmrg #endif 19636ac495dSmrg #ifdef __UINTPTR_MAX__ 19736ac495dSmrg # undef UINTPTR_MAX 19836ac495dSmrg # define UINTPTR_MAX __UINTPTR_MAX__ 19936ac495dSmrg #endif 20036ac495dSmrg 20136ac495dSmrg #undef INTMAX_MAX 20236ac495dSmrg #define INTMAX_MAX __INTMAX_MAX__ 20336ac495dSmrg #undef INTMAX_MIN 20436ac495dSmrg #define INTMAX_MIN (-INTMAX_MAX - 1) 20536ac495dSmrg #undef UINTMAX_MAX 20636ac495dSmrg #define UINTMAX_MAX __UINTMAX_MAX__ 20736ac495dSmrg 20836ac495dSmrg /* 7.18.3 Limits of other integer types */ 20936ac495dSmrg 21036ac495dSmrg #undef PTRDIFF_MAX 21136ac495dSmrg #define PTRDIFF_MAX __PTRDIFF_MAX__ 21236ac495dSmrg #undef PTRDIFF_MIN 21336ac495dSmrg #define PTRDIFF_MIN (-PTRDIFF_MAX - 1) 21436ac495dSmrg 21536ac495dSmrg #undef SIG_ATOMIC_MAX 21636ac495dSmrg #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ 21736ac495dSmrg #undef SIG_ATOMIC_MIN 21836ac495dSmrg #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__ 21936ac495dSmrg 22036ac495dSmrg #undef SIZE_MAX 22136ac495dSmrg #define SIZE_MAX __SIZE_MAX__ 22236ac495dSmrg 22336ac495dSmrg #undef WCHAR_MAX 22436ac495dSmrg #define WCHAR_MAX __WCHAR_MAX__ 22536ac495dSmrg #undef WCHAR_MIN 22636ac495dSmrg #define WCHAR_MIN __WCHAR_MIN__ 22736ac495dSmrg 22836ac495dSmrg #undef WINT_MAX 22936ac495dSmrg #define WINT_MAX __WINT_MAX__ 23036ac495dSmrg #undef WINT_MIN 23136ac495dSmrg #define WINT_MIN __WINT_MIN__ 23236ac495dSmrg 23336ac495dSmrg #endif /* (!defined __cplusplus || __cplusplus >= 201103L 23436ac495dSmrg || defined __STDC_LIMIT_MACROS) */ 23536ac495dSmrg 23636ac495dSmrg #if (!defined __cplusplus || __cplusplus >= 201103L \ 23736ac495dSmrg || defined __STDC_CONSTANT_MACROS) 23836ac495dSmrg 23936ac495dSmrg #undef INT8_C 24036ac495dSmrg #define INT8_C(c) __INT8_C(c) 24136ac495dSmrg #undef INT16_C 24236ac495dSmrg #define INT16_C(c) __INT16_C(c) 24336ac495dSmrg #undef INT32_C 24436ac495dSmrg #define INT32_C(c) __INT32_C(c) 24536ac495dSmrg #undef INT64_C 24636ac495dSmrg #define INT64_C(c) __INT64_C(c) 24736ac495dSmrg #undef UINT8_C 24836ac495dSmrg #define UINT8_C(c) __UINT8_C(c) 24936ac495dSmrg #undef UINT16_C 25036ac495dSmrg #define UINT16_C(c) __UINT16_C(c) 25136ac495dSmrg #undef UINT32_C 25236ac495dSmrg #define UINT32_C(c) __UINT32_C(c) 25336ac495dSmrg #undef UINT64_C 25436ac495dSmrg #define UINT64_C(c) __UINT64_C(c) 25536ac495dSmrg #undef INTMAX_C 25636ac495dSmrg #define INTMAX_C(c) __INTMAX_C(c) 25736ac495dSmrg #undef UINTMAX_C 25836ac495dSmrg #define UINTMAX_C(c) __UINTMAX_C(c) 25936ac495dSmrg 26036ac495dSmrg #endif /* (!defined __cplusplus || __cplusplus >= 201103L 26136ac495dSmrg || defined __STDC_CONSTANT_MACROS) */ 26236ac495dSmrg 263*8feb0f0bSmrg #if (defined __STDC_WANT_IEC_60559_BFP_EXT__ \ 264*8feb0f0bSmrg || (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L)) 265*8feb0f0bSmrg /* TS 18661-1 / C2X widths of integer types. */ 26636ac495dSmrg 26736ac495dSmrg #ifdef __INT8_TYPE__ 26836ac495dSmrg # undef INT8_WIDTH 26936ac495dSmrg # define INT8_WIDTH 8 27036ac495dSmrg #endif 27136ac495dSmrg #ifdef __UINT8_TYPE__ 27236ac495dSmrg # undef UINT8_WIDTH 27336ac495dSmrg # define UINT8_WIDTH 8 27436ac495dSmrg #endif 27536ac495dSmrg #ifdef __INT16_TYPE__ 27636ac495dSmrg # undef INT16_WIDTH 27736ac495dSmrg # define INT16_WIDTH 16 27836ac495dSmrg #endif 27936ac495dSmrg #ifdef __UINT16_TYPE__ 28036ac495dSmrg # undef UINT16_WIDTH 28136ac495dSmrg # define UINT16_WIDTH 16 28236ac495dSmrg #endif 28336ac495dSmrg #ifdef __INT32_TYPE__ 28436ac495dSmrg # undef INT32_WIDTH 28536ac495dSmrg # define INT32_WIDTH 32 28636ac495dSmrg #endif 28736ac495dSmrg #ifdef __UINT32_TYPE__ 28836ac495dSmrg # undef UINT32_WIDTH 28936ac495dSmrg # define UINT32_WIDTH 32 29036ac495dSmrg #endif 29136ac495dSmrg #ifdef __INT64_TYPE__ 29236ac495dSmrg # undef INT64_WIDTH 29336ac495dSmrg # define INT64_WIDTH 64 29436ac495dSmrg #endif 29536ac495dSmrg #ifdef __UINT64_TYPE__ 29636ac495dSmrg # undef UINT64_WIDTH 29736ac495dSmrg # define UINT64_WIDTH 64 29836ac495dSmrg #endif 29936ac495dSmrg 30036ac495dSmrg #undef INT_LEAST8_WIDTH 30136ac495dSmrg #define INT_LEAST8_WIDTH __INT_LEAST8_WIDTH__ 30236ac495dSmrg #undef UINT_LEAST8_WIDTH 30336ac495dSmrg #define UINT_LEAST8_WIDTH __INT_LEAST8_WIDTH__ 30436ac495dSmrg #undef INT_LEAST16_WIDTH 30536ac495dSmrg #define INT_LEAST16_WIDTH __INT_LEAST16_WIDTH__ 30636ac495dSmrg #undef UINT_LEAST16_WIDTH 30736ac495dSmrg #define UINT_LEAST16_WIDTH __INT_LEAST16_WIDTH__ 30836ac495dSmrg #undef INT_LEAST32_WIDTH 30936ac495dSmrg #define INT_LEAST32_WIDTH __INT_LEAST32_WIDTH__ 31036ac495dSmrg #undef UINT_LEAST32_WIDTH 31136ac495dSmrg #define UINT_LEAST32_WIDTH __INT_LEAST32_WIDTH__ 31236ac495dSmrg #undef INT_LEAST64_WIDTH 31336ac495dSmrg #define INT_LEAST64_WIDTH __INT_LEAST64_WIDTH__ 31436ac495dSmrg #undef UINT_LEAST64_WIDTH 31536ac495dSmrg #define UINT_LEAST64_WIDTH __INT_LEAST64_WIDTH__ 31636ac495dSmrg 31736ac495dSmrg #undef INT_FAST8_WIDTH 31836ac495dSmrg #define INT_FAST8_WIDTH __INT_FAST8_WIDTH__ 31936ac495dSmrg #undef UINT_FAST8_WIDTH 32036ac495dSmrg #define UINT_FAST8_WIDTH __INT_FAST8_WIDTH__ 32136ac495dSmrg #undef INT_FAST16_WIDTH 32236ac495dSmrg #define INT_FAST16_WIDTH __INT_FAST16_WIDTH__ 32336ac495dSmrg #undef UINT_FAST16_WIDTH 32436ac495dSmrg #define UINT_FAST16_WIDTH __INT_FAST16_WIDTH__ 32536ac495dSmrg #undef INT_FAST32_WIDTH 32636ac495dSmrg #define INT_FAST32_WIDTH __INT_FAST32_WIDTH__ 32736ac495dSmrg #undef UINT_FAST32_WIDTH 32836ac495dSmrg #define UINT_FAST32_WIDTH __INT_FAST32_WIDTH__ 32936ac495dSmrg #undef INT_FAST64_WIDTH 33036ac495dSmrg #define INT_FAST64_WIDTH __INT_FAST64_WIDTH__ 33136ac495dSmrg #undef UINT_FAST64_WIDTH 33236ac495dSmrg #define UINT_FAST64_WIDTH __INT_FAST64_WIDTH__ 33336ac495dSmrg 33436ac495dSmrg #ifdef __INTPTR_TYPE__ 33536ac495dSmrg # undef INTPTR_WIDTH 33636ac495dSmrg # define INTPTR_WIDTH __INTPTR_WIDTH__ 33736ac495dSmrg #endif 33836ac495dSmrg #ifdef __UINTPTR_TYPE__ 33936ac495dSmrg # undef UINTPTR_WIDTH 34036ac495dSmrg # define UINTPTR_WIDTH __INTPTR_WIDTH__ 34136ac495dSmrg #endif 34236ac495dSmrg 34336ac495dSmrg #undef INTMAX_WIDTH 34436ac495dSmrg #define INTMAX_WIDTH __INTMAX_WIDTH__ 34536ac495dSmrg #undef UINTMAX_WIDTH 34636ac495dSmrg #define UINTMAX_WIDTH __INTMAX_WIDTH__ 34736ac495dSmrg 34836ac495dSmrg #undef PTRDIFF_WIDTH 34936ac495dSmrg #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__ 35036ac495dSmrg 35136ac495dSmrg #undef SIG_ATOMIC_WIDTH 35236ac495dSmrg #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__ 35336ac495dSmrg 35436ac495dSmrg #undef SIZE_WIDTH 35536ac495dSmrg #define SIZE_WIDTH __SIZE_WIDTH__ 35636ac495dSmrg 35736ac495dSmrg #undef WCHAR_WIDTH 35836ac495dSmrg #define WCHAR_WIDTH __WCHAR_WIDTH__ 35936ac495dSmrg 36036ac495dSmrg #undef WINT_WIDTH 36136ac495dSmrg #define WINT_WIDTH __WINT_WIDTH__ 36236ac495dSmrg 36336ac495dSmrg #endif 36436ac495dSmrg 36536ac495dSmrg #endif /* _GCC_STDINT_H */ 366