From b2797f6a6136402834a97a0b51981df91164991f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 5 Nov 2020 14:50:02 +0900 Subject: [PATCH 01/34] include/stdint.h: Use _uintmax_t and _intmax_t from arch types.h As we do for other intXX_t types. --- include/stdint.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/include/stdint.h b/include/stdint.h index 69c54be9d43a8..70fa0eca631b1 100644 --- a/include/stdint.h +++ b/include/stdint.h @@ -300,13 +300,8 @@ typedef _uint_farptr_t uint_farptr_t; /* Greatest-width integer types */ -#ifdef __INT64_DEFINED -typedef _int64_t intmax_t; -typedef _uint64_t uintmax_t; -#else -typedef _int32_t intmax_t; -typedef _uint32_t uintmax_t; -#endif +typedef _intmax_t intmax_t; +typedef _uintmax_t uintmax_t; #endif /* CONFIG_ARCH_STDINT_H */ #endif /* __INCLUDE_STDINT_H */ From 7ff339645d9c2edc6f834d92627495d580b0adb5 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 9 Nov 2020 16:31:49 +0900 Subject: [PATCH 02/34] xtensa: Change _int32_t from long to int to match the compiler PRIx32 etc is already "x" etc. --- arch/xtensa/include/types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/xtensa/include/types.h b/arch/xtensa/include/types.h index bb13a1b3e65ec..8fefd9c225d19 100644 --- a/arch/xtensa/include/types.h +++ b/arch/xtensa/include/types.h @@ -69,8 +69,8 @@ typedef unsigned char _uint8_t; typedef signed short _int16_t; typedef unsigned short _uint16_t; -typedef signed long _int32_t; -typedef unsigned long _uint32_t; +typedef signed int _int32_t; +typedef unsigned int _uint32_t; typedef signed long long _int64_t; typedef unsigned long long _uint64_t; From b9123f37d53ad0088dfd4513ca62cff961292a5b Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:57:38 +0900 Subject: [PATCH 03/34] xtensa: Add _intmax_t and _uintmax_t --- arch/xtensa/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/xtensa/include/types.h b/arch/xtensa/include/types.h index 8fefd9c225d19..496fd6288f65d 100644 --- a/arch/xtensa/include/types.h +++ b/arch/xtensa/include/types.h @@ -76,6 +76,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From b84653fa5e3ae33b8e1bc3cc34f7bae33c78ab11 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 9 Nov 2020 17:27:13 +0900 Subject: [PATCH 04/34] arm: Change _int32_t from int to long to match the compiler --- arch/arm/include/types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/types.h b/arch/arm/include/types.h index fd804a87cea87..86fffc154a9bf 100644 --- a/arch/arm/include/types.h +++ b/arch/arm/include/types.h @@ -56,8 +56,8 @@ typedef unsigned char _uint8_t; typedef signed short _int16_t; typedef unsigned short _uint16_t; -typedef signed int _int32_t; -typedef unsigned int _uint32_t; +typedef signed long _int32_t; +typedef unsigned long _uint32_t; typedef signed long long _int64_t; typedef unsigned long long _uint64_t; From 04b453fa419f8a38fb7191bc8dfcb52c727f4302 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 9 Nov 2020 17:28:28 +0900 Subject: [PATCH 05/34] arm inttypes.h: Use long for 32-bit integer --- arch/arm/include/inttypes.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/arch/arm/include/inttypes.h b/arch/arm/include/inttypes.h index 509611e0b6eb8..f47ac32495873 100644 --- a/arch/arm/include/inttypes.h +++ b/arch/arm/include/inttypes.h @@ -46,77 +46,77 @@ #define PRId8 "d" #define PRId16 "d" -#define PRId32 "d" +#define PRId32 "ld" #define PRId64 "lld" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" -#define PRIi32 "i" +#define PRIi32 "li" #define PRIi64 "lli" #define PRIiPTR "i" #define PRIo8 "o" #define PRIo16 "o" -#define PRIo32 "o" +#define PRIo32 "lo" #define PRIo64 "llo" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" -#define PRIu32 "u" +#define PRIu32 "lu" #define PRIu64 "llu" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" -#define PRIx32 "x" +#define PRIx32 "lx" #define PRIx64 "llx" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" -#define PRIX32 "X" +#define PRIX32 "lX" #define PRIX64 "llX" #define PRIXPTR "X" #define SCNd8 "hhd" #define SCNd16 "hd" -#define SCNd32 "d" +#define SCNd32 "ld" #define SCNd64 "lld" #define SCNdPTR "d" #define SCNi8 "hhi" #define SCNi16 "hi" -#define SCNi32 "i" +#define SCNi32 "li" #define SCNi64 "lli" #define SCNiPTR "i" #define SCNo8 "hho" #define SCNo16 "ho" -#define SCNo32 "o" +#define SCNo32 "lo" #define SCNo64 "llo" #define SCNoPTR "o" #define SCNu8 "hhu" #define SCNu16 "hu" -#define SCNu32 "u" +#define SCNu32 "lu" #define SCNu64 "llu" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" -#define SCNx32 "x" +#define SCNx32 "lx" #define SCNx64 "llx" #define SCNxPTR "x" @@ -128,7 +128,7 @@ #define UINT8_C(x) x #define UINT16_C(x) x -#define UINT32_C(x) x ## u +#define UINT32_C(x) x ## ul #define UINT64_C(x) x ## ull #endif /* __ARCH_ARM_INCLUDE_INTTYPES_H */ From bd4abd17eec733b964914c011f202f0ef9a56df4 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:45:27 +0900 Subject: [PATCH 06/34] arm: Add _intmax_t and _uintmax_t --- arch/arm/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/include/types.h b/arch/arm/include/types.h index 86fffc154a9bf..f651da4e7cc0d 100644 --- a/arch/arm/include/types.h +++ b/arch/arm/include/types.h @@ -63,6 +63,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From a7185b3f942970d326b8e2ac4a789c8bb034e741 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:46:31 +0900 Subject: [PATCH 07/34] avr32: Add _intmax_t and _uintmax_t --- arch/avr/include/avr32/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/avr/include/avr32/types.h b/arch/avr/include/avr32/types.h index 81a6a66914466..2412d58c189ef 100644 --- a/arch/avr/include/avr32/types.h +++ b/arch/avr/include/avr32/types.h @@ -76,6 +76,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From 3dadf83e4390a2e3cd8be05a19f73e1dbba14218 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:47:33 +0900 Subject: [PATCH 08/34] avr: Add _intmax_t and _uintmax_t --- arch/avr/include/avr/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/avr/include/avr/types.h b/arch/avr/include/avr/types.h index ef11383a5de3d..788f9c4371c1b 100644 --- a/arch/avr/include/avr/types.h +++ b/arch/avr/include/avr/types.h @@ -79,6 +79,9 @@ typedef double double_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A (near) size is 2 bytes */ #if defined(__SIZE_TYPE__) From f4f75ab008f91dc384d0e4e4f82db7d08e50ff5c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 11 Nov 2020 12:11:27 +0900 Subject: [PATCH 09/34] risc-v: Switch int64_t from long long to long So that it matches what the toolchain expects. spacetanuki% riscv64-unknown-elf-gcc --version riscv64-unknown-elf-gcc (SiFive GCC 8.3.0-2019.08.0) 8.3.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. spacetanuki% riscv64-unknown-elf-gcc -dM -E - < /dev/null | grep UINT64_TYPE #define __UINT64_TYPE__ long unsigned int spacetanuki% --- arch/risc-v/include/inttypes.h | 26 +++++++++++++------------- arch/risc-v/include/types.h | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/risc-v/include/inttypes.h b/arch/risc-v/include/inttypes.h index d0940d1337d4e..b06bc9328b73c 100644 --- a/arch/risc-v/include/inttypes.h +++ b/arch/risc-v/include/inttypes.h @@ -47,88 +47,88 @@ #define PRId8 "d" #define PRId16 "d" #define PRId32 "d" -#define PRId64 "lld" +#define PRId64 "ld" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" #define PRIi32 "i" -#define PRIi64 "lli" +#define PRIi64 "li" #define PRIiPTR "i" #define PRIo8 "o" #define PRIo16 "o" #define PRIo32 "o" -#define PRIo64 "llo" +#define PRIo64 "lo" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" #define PRIu32 "u" -#define PRIu64 "llu" +#define PRIu64 "lu" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" #define PRIx32 "x" -#define PRIx64 "llx" +#define PRIx64 "lx" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" #define PRIX32 "X" -#define PRIX64 "llX" +#define PRIX64 "lX" #define PRIXPTR "X" #define SCNd8 "hhd" #define SCNd16 "hd" #define SCNd32 "d" -#define SCNd64 "lld" +#define SCNd64 "ld" #define SCNdPTR "d" #define SCNi8 "hhi" #define SCNi16 "hi" #define SCNi32 "i" -#define SCNi64 "lli" +#define SCNi64 "li" #define SCNiPTR "i" #define SCNo8 "hho" #define SCNo16 "ho" #define SCNo32 "o" -#define SCNo64 "llo" +#define SCNo64 "lo" #define SCNoPTR "o" #define SCNu8 "hhu" #define SCNu16 "hu" #define SCNu32 "u" -#define SCNu64 "llu" +#define SCNu64 "lu" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" #define SCNx32 "x" -#define SCNx64 "llx" +#define SCNx64 "lx" #define SCNxPTR "x" #define INT8_C(x) x #define INT16_C(x) x #define INT32_C(x) x -#define INT64_C(x) x ## ll +#define INT64_C(x) x ## l #define UINT8_C(x) x #define UINT16_C(x) x #define UINT32_C(x) x ## u -#define UINT64_C(x) x ## ull +#define UINT64_C(x) x ## ul #endif /* __ARCH_RISCV_INCLUDE_INTTYPES_H */ diff --git a/arch/risc-v/include/types.h b/arch/risc-v/include/types.h index f4b4e55d45125..61e0320079a09 100644 --- a/arch/risc-v/include/types.h +++ b/arch/risc-v/include/types.h @@ -72,8 +72,8 @@ typedef unsigned short _uint16_t; typedef signed int _int32_t; typedef unsigned int _uint32_t; -typedef signed long long _int64_t; -typedef unsigned long long _uint64_t; +typedef signed long _int64_t; +typedef unsigned long _uint64_t; #define __INT64_DEFINED #ifdef __LP64__ From 6e8c497b172162a310009d81e1d68807d866f135 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 11 Nov 2020 13:02:56 +0900 Subject: [PATCH 10/34] risc-v 32-bit: Fix types to match what the compiler expects spacetanuki% riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -dM -E - < /dev/null | grep INT32_TYPE #define __INT32_TYPE__ long int #define __UINT32_TYPE__ long unsigned int spacetanuki% riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -dM -E - < /dev/null | grep INT64_TYPE #define __INT64_TYPE__ long long int #define __UINT64_TYPE__ long long unsigned int spacetanuki% riscv64-unknown-elf-gcc -dM -E - < /dev/null | grep LP64 #define __LP64__ 1 #define _LP64 1 spacetanuki% --- arch/risc-v/include/inttypes.h | 68 +++++++++++++++++++++------------- arch/risc-v/include/types.h | 8 ++++ 2 files changed, 50 insertions(+), 26 deletions(-) diff --git a/arch/risc-v/include/inttypes.h b/arch/risc-v/include/inttypes.h index b06bc9328b73c..f11bc429889d8 100644 --- a/arch/risc-v/include/inttypes.h +++ b/arch/risc-v/include/inttypes.h @@ -44,91 +44,107 @@ * Pre-processor Definitions ****************************************************************************/ +#if defined(__LP64__) +#define _PRI32PREFIX +#define _PRI64PREFIX "l" +#define _SCN32PREFIX +#define _SCN64PREFIX "l" +#define INT32_C(x) x +#define INT64_C(x) x ## l +#define UINT32_C(x) x ## u +#define UINT64_C(x) x ## ul +#else /* defined(__LP64__) */ +#define _PRI32PREFIX "l" +#define _PRI64PREFIX "ll" +#define _SCN32PREFIX "l" +#define _SCN64PREFIX "ll" +#define INT32_C(x) x ## l +#define INT64_C(x) x ## ll +#define UINT32_C(x) x ## ul +#define UINT64_C(x) x ## ull +#endif /* defined(__LP64__) */ + #define PRId8 "d" #define PRId16 "d" -#define PRId32 "d" -#define PRId64 "ld" +#define PRId32 _PRI32PREFIX "d" +#define PRId64 _PRI64PREFIX "d" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" -#define PRIi32 "i" -#define PRIi64 "li" +#define PRIi32 _PRI32PREFIX "i" +#define PRIi64 _PRI64PREFIX "i" #define PRIiPTR "i" #define PRIo8 "o" #define PRIo16 "o" -#define PRIo32 "o" -#define PRIo64 "lo" +#define PRIo32 _PRI32PREFIX "o" +#define PRIo64 _PRI64PREFIX "o" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" -#define PRIu32 "u" -#define PRIu64 "lu" +#define PRIu32 _PRI32PREFIX "u" +#define PRIu64 _PRI64PREFIX "u" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" -#define PRIx32 "x" -#define PRIx64 "lx" +#define PRIx32 _PRI32PREFIX "x" +#define PRIx64 _PRI64PREFIX "x" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" -#define PRIX32 "X" -#define PRIX64 "lX" +#define PRIX32 _PRI32PREFIX "X" +#define PRIX64 _PRI64PREFIX "X" #define PRIXPTR "X" #define SCNd8 "hhd" #define SCNd16 "hd" -#define SCNd32 "d" -#define SCNd64 "ld" +#define SCNd32 _SCN32PREFIX "d" +#define SCNd64 _SCN64PREFIX "d" #define SCNdPTR "d" #define SCNi8 "hhi" #define SCNi16 "hi" -#define SCNi32 "i" -#define SCNi64 "li" +#define SCNi32 _SCN32PREFIX "i" +#define SCNi64 _SCN64PREFIX "i" #define SCNiPTR "i" #define SCNo8 "hho" #define SCNo16 "ho" -#define SCNo32 "o" -#define SCNo64 "lo" +#define SCNo32 _SCN32PREFIX "o" +#define SCNo64 _SCN64PREFIX "o" #define SCNoPTR "o" #define SCNu8 "hhu" #define SCNu16 "hu" -#define SCNu32 "u" -#define SCNu64 "lu" +#define SCNu32 _SCN32PREFIX "u" +#define SCNu64 _SCN64PREFIX "u" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" -#define SCNx32 "x" -#define SCNx64 "lx" +#define SCNx32 _SCN32PREFIX "x" +#define SCNx64 _SCN64PREFIX "x" #define SCNxPTR "x" #define INT8_C(x) x #define INT16_C(x) x -#define INT32_C(x) x -#define INT64_C(x) x ## l #define UINT8_C(x) x #define UINT16_C(x) x -#define UINT32_C(x) x ## u -#define UINT64_C(x) x ## ul #endif /* __ARCH_RISCV_INCLUDE_INTTYPES_H */ diff --git a/arch/risc-v/include/types.h b/arch/risc-v/include/types.h index 61e0320079a09..10984051d5799 100644 --- a/arch/risc-v/include/types.h +++ b/arch/risc-v/include/types.h @@ -69,11 +69,19 @@ typedef unsigned char _uint8_t; typedef signed short _int16_t; typedef unsigned short _uint16_t; +#ifdef __LP64__ typedef signed int _int32_t; typedef unsigned int _uint32_t; typedef signed long _int64_t; typedef unsigned long _uint64_t; +#else /* __LP64__ */ +typedef signed long _int32_t; +typedef unsigned long _uint32_t; + +typedef signed long long _int64_t; +typedef unsigned long long _uint64_t; +#endif /* __LP64__ */ #define __INT64_DEFINED #ifdef __LP64__ From 3023c9d42492838bdbc246fd7b473f1a6c27966a Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:55:48 +0900 Subject: [PATCH 11/34] risc-v: Add _intmax_t and _uintmax_t --- arch/risc-v/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/risc-v/include/types.h b/arch/risc-v/include/types.h index 10984051d5799..c9d2060294f73 100644 --- a/arch/risc-v/include/types.h +++ b/arch/risc-v/include/types.h @@ -84,6 +84,9 @@ typedef unsigned long long _uint64_t; #endif /* __LP64__ */ #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + #ifdef __LP64__ /* A size is 8 bytes */ From 66f4ae52f39754595b600652c23fbf75e2d00f5a Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 11 Nov 2020 13:41:35 +0900 Subject: [PATCH 12/34] intel64: Switch int64_t from long long to long To make it match what the compiler expects. on nuttx-ci-linux image: root@fec5a6192c70:/tools# gcc -dM -E - < /dev/null | grep -E "UINT(32|64)_TYPE" #define __UINT64_TYPE__ long unsigned int #define __UINT32_TYPE__ unsigned int root@fec5a6192c70:/tools# on macOS: spacetanuki% x86_64-elf-gcc -dM -E - < /dev/null | grep -E "UINT(32|64)_TYPE" #define __UINT32_TYPE__ unsigned int #define __UINT64_TYPE__ long unsigned int spacetanuki% --- arch/x86_64/include/intel64/inttypes.h | 26 +++++++++++++------------- arch/x86_64/include/intel64/types.h | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/x86_64/include/intel64/inttypes.h b/arch/x86_64/include/intel64/inttypes.h index 19a8d39041e69..5a3081b5fd026 100644 --- a/arch/x86_64/include/intel64/inttypes.h +++ b/arch/x86_64/include/intel64/inttypes.h @@ -32,88 +32,88 @@ #define PRId8 "d" #define PRId16 "d" #define PRId32 "d" -#define PRId64 "lld" +#define PRId64 "ld" #define PRIdPTR "lld" #define PRIi8 "i" #define PRIi16 "i" #define PRIi32 "i" -#define PRIi64 "lli" +#define PRIi64 "li" #define PRIiPTR "lli" #define PRIo8 "o" #define PRIo16 "o" #define PRIo32 "o" -#define PRIo64 "llo" +#define PRIo64 "lo" #define PRIoPTR "llo" #define PRIu8 "u" #define PRIu16 "u" #define PRIu32 "u" -#define PRIu64 "llu" +#define PRIu64 "lu" #define PRIuPTR "llu" #define PRIx8 "x" #define PRIx16 "x" #define PRIx32 "x" -#define PRIx64 "llx" +#define PRIx64 "lx" #define PRIxPTR "llx" #define PRIX8 "X" #define PRIX16 "X" #define PRIX32 "X" -#define PRIX64 "llX" +#define PRIX64 "lX" #define PRIXPTR "llX" #define SCNd8 "hhd" #define SCNd16 "hd" #define SCNd32 "d" -#define SCNd64 "lld" +#define SCNd64 "ld" #define SCNdPTR "lld" #define SCNi8 "hhi" #define SCNi16 "hi" #define SCNi32 "i" -#define SCNi64 "lli" +#define SCNi64 "li" #define SCNiPTR "lli" #define SCNo8 "hho" #define SCNo16 "ho" #define SCNo32 "o" -#define SCNo64 "llo" +#define SCNo64 "lo" #define SCNoPTR "llo" #define SCNu8 "hhu" #define SCNu16 "hu" #define SCNu32 "u" -#define SCNu64 "llu" +#define SCNu64 "lu" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" #define SCNx32 "x" -#define SCNx64 "llx" +#define SCNx64 "lx" #define SCNxPTR "x" #define INT8_C(x) x #define INT16_C(x) x #define INT32_C(x) x -#define INT64_C(x) x ## ll +#define INT64_C(x) x ## l #define UINT8_C(x) x #define UINT16_C(x) x #define UINT32_C(x) x ## u -#define UINT64_C(x) x ## ull +#define UINT64_C(x) x ## ul #endif /* __ARCH_X86_64_INCLUDE_INTEL64_INTTYPES_H */ diff --git a/arch/x86_64/include/intel64/types.h b/arch/x86_64/include/intel64/types.h index bb99f255e7a57..d51cb945dbc8d 100644 --- a/arch/x86_64/include/intel64/types.h +++ b/arch/x86_64/include/intel64/types.h @@ -58,8 +58,8 @@ typedef unsigned short _uint16_t; typedef signed int _int32_t; typedef unsigned int _uint32_t; -typedef signed long long _int64_t; -typedef unsigned long long _uint64_t; +typedef signed long _int64_t; +typedef unsigned long _uint64_t; #define __INT64_DEFINED /* A pointer is 8 bytes */ From cac3753e6295d5a764d67c01ecf23e4dab1a7d7d Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:57:09 +0900 Subject: [PATCH 13/34] intel64: Add _intmax_t and _uintmax_t --- arch/x86_64/include/intel64/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86_64/include/intel64/types.h b/arch/x86_64/include/intel64/types.h index d51cb945dbc8d..aca6a76ad1557 100644 --- a/arch/x86_64/include/intel64/types.h +++ b/arch/x86_64/include/intel64/types.h @@ -62,6 +62,9 @@ typedef signed long _int64_t; typedef unsigned long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A pointer is 8 bytes */ typedef signed long long _intptr_t; From 9bdf4d8530fd582d3b365493cd92754bb80d56f6 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:56:25 +0900 Subject: [PATCH 14/34] i486: Add _intmax_t and _uintmax_t --- arch/x86/include/i486/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/include/i486/types.h b/arch/x86/include/i486/types.h index c5e665213fa37..378ae339d3f29 100644 --- a/arch/x86/include/i486/types.h +++ b/arch/x86/include/i486/types.h @@ -77,6 +77,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From 4b3d5f7f0204ba3227d7130907f84200d37d4f27 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 16 Nov 2020 14:11:38 +0900 Subject: [PATCH 15/34] rx65n: Fix int32_t to match the compiler root@212cf3f52994:/tools# rx-elf-gcc -dM -E - < /dev/null | grep "__INT.*_TYPE__"|sort #define __INT16_TYPE__ short int #define __INT32_TYPE__ long int #define __INT64_TYPE__ long long int #define __INT8_TYPE__ signed char #define __INTMAX_TYPE__ long long int #define __INTPTR_TYPE__ long int #define __INT_FAST16_TYPE__ int #define __INT_FAST32_TYPE__ int #define __INT_FAST64_TYPE__ long long int #define __INT_FAST8_TYPE__ int #define __INT_LEAST16_TYPE__ short int #define __INT_LEAST32_TYPE__ long int #define __INT_LEAST64_TYPE__ long long int #define __INT_LEAST8_TYPE__ signed char root@212cf3f52994:/tools# --- arch/renesas/include/rx65n/inttypes.h | 26 +++++++++++++------------- arch/renesas/include/rx65n/types.h | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/renesas/include/rx65n/inttypes.h b/arch/renesas/include/rx65n/inttypes.h index 2c9e0d0303a98..0dc7bba2f2fd9 100644 --- a/arch/renesas/include/rx65n/inttypes.h +++ b/arch/renesas/include/rx65n/inttypes.h @@ -41,89 +41,89 @@ #define PRId8 "d" #define PRId16 "d" -#define PRId32 "d" +#define PRId32 "ld" #define PRId64 "lld" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" -#define PRIi32 "i" +#define PRIi32 "li" #define PRIi64 "lli" #define PRIiPTR "i" #define PRIo8 "o" #define PRIo16 "o" -#define PRIo32 "o" +#define PRIo32 "lo" #define PRIo64 "llo" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" -#define PRIu32 "u" +#define PRIu32 "lu" #define PRIu64 "llu" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" -#define PRIx32 "x" +#define PRIx32 "lx" #define PRIx64 "llx" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" -#define PRIX32 "X" +#define PRIX32 "lX" #define PRIX64 "llX" #define PRIXPTR "X" #define SCNd8 "hhd" #define SCNd16 "hd" -#define SCNd32 "d" +#define SCNd32 "ld" #define SCNd64 "lld" #define SCNdPTR "d" #define SCNi8 "hhi" #define SCNi16 "hi" -#define SCNi32 "i" +#define SCNi32 "li" #define SCNi64 "lli" #define SCNiPTR "i" #define SCNo8 "hho" #define SCNo16 "ho" -#define SCNo32 "o" +#define SCNo32 "lo" #define SCNo64 "llo" #define SCNoPTR "o" #define SCNu8 "hhu" #define SCNu16 "hu" -#define SCNu32 "u" +#define SCNu32 "lu" #define SCNu64 "llu" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" -#define SCNx32 "x" +#define SCNx32 "lx" #define SCNx64 "llx" #define SCNxPTR "x" #define INT8_C(x) x #define INT16_C(x) x -#define INT32_C(x) x +#define INT32_C(x) x ## l #define INT64_C(x) x ## ll #define UINT8_C(x) x #define UINT16_C(x) x -#define UINT32_C(x) x ## u +#define UINT32_C(x) x ## ul #define UINT64_C(x) x ## ull #endif /* __ARCH_RENESAS_INCLUDE_RX65N_INTTYPES_H */ diff --git a/arch/renesas/include/rx65n/types.h b/arch/renesas/include/rx65n/types.h index c300b540f0ca9..19da2f281e174 100644 --- a/arch/renesas/include/rx65n/types.h +++ b/arch/renesas/include/rx65n/types.h @@ -54,8 +54,8 @@ typedef unsigned char _uint8_t; typedef signed short _int16_t; typedef unsigned short _uint16_t; -typedef signed int _int32_t; -typedef unsigned int _uint32_t; +typedef signed long _int32_t; +typedef unsigned long _uint32_t; typedef signed long long _int64_t; typedef unsigned long long _uint64_t; From 34d62de3ed6850ec8a449cdfcef33095b2b99732 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:53:50 +0900 Subject: [PATCH 16/34] rx65n: Add _intmax_t and _uintmax_t --- arch/renesas/include/rx65n/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/renesas/include/rx65n/types.h b/arch/renesas/include/rx65n/types.h index 19da2f281e174..f01ba758718b7 100644 --- a/arch/renesas/include/rx65n/types.h +++ b/arch/renesas/include/rx65n/types.h @@ -61,6 +61,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From c9675c8d4f60f8207b6645d14eb56c3b8ea69343 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:54:28 +0900 Subject: [PATCH 17/34] sh1: Add _intmax_t and _uintmax_t --- arch/renesas/include/sh1/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/renesas/include/sh1/types.h b/arch/renesas/include/sh1/types.h index 1851ead8f1e00..fdf849528e735 100644 --- a/arch/renesas/include/sh1/types.h +++ b/arch/renesas/include/sh1/types.h @@ -76,6 +76,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From a9ab6406d6f42146cccd1c7cb82df61acc0503a3 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:53:05 +0900 Subject: [PATCH 18/34] m16c: Add _intmax_t and _uintmax_t --- arch/renesas/include/m16c/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/renesas/include/m16c/types.h b/arch/renesas/include/m16c/types.h index 6842101aa87f0..5f61d27e5f427 100644 --- a/arch/renesas/include/m16c/types.h +++ b/arch/renesas/include/m16c/types.h @@ -78,6 +78,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 2 bytes */ #if defined(__SIZE_TYPE__) From cbd19066bf4926650a41f2c4513b2b8b2ae5500a Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:51:28 +0900 Subject: [PATCH 19/34] misoc: Add _intmax_t and _uintmax_t --- arch/misoc/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/misoc/include/types.h b/arch/misoc/include/types.h index e448a8cd3cd91..c04aec077910b 100644 --- a/arch/misoc/include/types.h +++ b/arch/misoc/include/types.h @@ -76,6 +76,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From 2967474da8aee9d607be1cbb3674abc5f427727c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:52:17 +0900 Subject: [PATCH 20/34] or1k: Add _intmax_t and _uintmax_t --- arch/or1k/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/or1k/include/types.h b/arch/or1k/include/types.h index 43de7d4400e5d..0e7c4a35c9499 100644 --- a/arch/or1k/include/types.h +++ b/arch/or1k/include/types.h @@ -79,6 +79,9 @@ typedef unsigned long long _uint64_t; #define __INT64_DEFINED 1 +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From a23373a43d7723b3d59e285e0ec82e1254cd72e2 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 17 Nov 2020 09:03:50 +0900 Subject: [PATCH 21/34] z180: Add _intmax_t and _uintmax_t --- arch/z80/include/z180/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/z80/include/z180/types.h b/arch/z80/include/z180/types.h index cbdd94318d697..c18f072ee1916 100644 --- a/arch/z80/include/z180/types.h +++ b/arch/z80/include/z180/types.h @@ -84,6 +84,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 2 bytes */ #if defined(__SIZE_TYPE__) From ebc0de5b0f625e174315cfd10534271f1a139096 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 17 Nov 2020 09:01:54 +0900 Subject: [PATCH 22/34] z8: Add _intmax_t and _uintmax_t --- arch/z80/include/z8/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/z80/include/z8/types.h b/arch/z80/include/z8/types.h index 4f84676d864c9..d620f5fc67fde 100644 --- a/arch/z80/include/z8/types.h +++ b/arch/z80/include/z8/types.h @@ -88,6 +88,9 @@ typedef unsigned int _uint16_t; typedef signed long _int32_t; typedef unsigned long _uint32_t; +typedef _int32_t _intmax_t; +typedef _uint32_t _uintmax_t; + /* A size is 2 bytes */ #if defined(__SIZE_TYPE__) From aa03b690e817a80cd3fdf3ea7152383aaf43ba83 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 17 Nov 2020 09:02:44 +0900 Subject: [PATCH 23/34] z80: Add _intmax_t and _uintmax_t --- arch/z80/include/z80/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/z80/include/z80/types.h b/arch/z80/include/z80/types.h index fb774dd75e355..021152b3595ef 100644 --- a/arch/z80/include/z80/types.h +++ b/arch/z80/include/z80/types.h @@ -84,6 +84,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 2 bytes */ #if defined(__SIZE_TYPE__) From d2d5a1810d43389916b4405f000c8454540b08a4 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 17 Nov 2020 09:03:21 +0900 Subject: [PATCH 24/34] ez80: Add _intmax_t and _uintmax_t --- arch/z80/include/ez80/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/z80/include/ez80/types.h b/arch/z80/include/ez80/types.h index edfd6f129795a..6db23df3eb3e8 100644 --- a/arch/z80/include/ez80/types.h +++ b/arch/z80/include/ez80/types.h @@ -84,6 +84,9 @@ typedef unsigned int _uint24_t; typedef signed long _int32_t; typedef unsigned long _uint32_t; +typedef _int32_t _intmax_t; +typedef _uint32_t _uintmax_t; + /* A pointer is 2 or 3 bytes, depending upon if the ez80 is in z80 * compatibility mode or not * From 43088d4fb21d8ae26032426d2f8674d799b8b172 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 17 Nov 2020 09:00:40 +0900 Subject: [PATCH 25/34] z16: Add _intmax_t and _uintmax_t --- arch/z16/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/z16/include/types.h b/arch/z16/include/types.h index e1e7f3ab9c353..e9a6eaa4a0499 100644 --- a/arch/z16/include/types.h +++ b/arch/z16/include/types.h @@ -72,6 +72,9 @@ typedef unsigned short _uint16_t; typedef signed int _int32_t; typedef unsigned int _uint32_t; +typedef _int32_t _intmax_t; +typedef _uint32_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From 56daf0d25f9144a4f0ef34b4349fbe0d6b2cb6f9 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:48:50 +0900 Subject: [PATCH 26/34] hc12: Add _intmax_t and _uintmax_t --- arch/hc/include/hc12/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/hc/include/hc12/types.h b/arch/hc/include/hc12/types.h index 3b7bab243de86..df179a8411798 100644 --- a/arch/hc/include/hc12/types.h +++ b/arch/hc/include/hc12/types.h @@ -85,6 +85,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is two bytes */ #if defined(__SIZE_TYPE__) From 8757e9c512317924ceb23359f049746878660aa8 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:50:00 +0900 Subject: [PATCH 27/34] hcs12: Add _intmax_t and _uintmax_t --- arch/hc/include/hcs12/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/hc/include/hcs12/types.h b/arch/hc/include/hcs12/types.h index 776cd51503d4b..5521b6f5ff9b9 100644 --- a/arch/hc/include/hcs12/types.h +++ b/arch/hc/include/hcs12/types.h @@ -86,6 +86,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is two bytes */ #if defined(__SIZE_TYPE__) From d9936d33f242fcacc69533574b195b0f9d30a38b Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 16 Nov 2020 14:27:44 +0900 Subject: [PATCH 28/34] mips: Use types matching the compiler types root@212cf3f52994:/tools# p32-gcc -mlong32 -dM -E - < /dev/null | grep "__INT.*_TYPE__"|sort #define __INT16_TYPE__ short int #define __INT32_TYPE__ long int #define __INT64_TYPE__ long long int #define __INT8_TYPE__ signed char #define __INTMAX_TYPE__ long long int #define __INTPTR_TYPE__ int #define __INT_FAST16_TYPE__ int #define __INT_FAST32_TYPE__ int #define __INT_FAST64_TYPE__ long long int #define __INT_FAST8_TYPE__ int #define __INT_LEAST16_TYPE__ short int #define __INT_LEAST32_TYPE__ long int #define __INT_LEAST64_TYPE__ long long int #define __INT_LEAST8_TYPE__ signed char root@212cf3f52994:/tools# --- arch/mips/include/inttypes.h | 26 +++++++++++++------------- arch/mips/include/types.h | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/mips/include/inttypes.h b/arch/mips/include/inttypes.h index d7bacdbed593f..97f3075da72a0 100644 --- a/arch/mips/include/inttypes.h +++ b/arch/mips/include/inttypes.h @@ -46,89 +46,89 @@ #define PRId8 "d" #define PRId16 "d" -#define PRId32 "d" +#define PRId32 "ld" #define PRId64 "lld" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" -#define PRIi32 "i" +#define PRIi32 "li" #define PRIi64 "lli" #define PRIiPTR "i" #define PRIo8 "o" #define PRIo16 "o" -#define PRIo32 "o" +#define PRIo32 "lo" #define PRIo64 "llo" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" -#define PRIu32 "u" +#define PRIu32 "lu" #define PRIu64 "llu" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" -#define PRIx32 "x" +#define PRIx32 "lx" #define PRIx64 "llx" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" -#define PRIX32 "X" +#define PRIX32 "lX" #define PRIX64 "llX" #define PRIXPTR "X" #define SCNd8 "hhd" #define SCNd16 "hd" -#define SCNd32 "d" +#define SCNd32 "ld" #define SCNd64 "lld" #define SCNdPTR "d" #define SCNi8 "hhi" #define SCNi16 "hi" -#define SCNi32 "i" +#define SCNi32 "li" #define SCNi64 "lli" #define SCNiPTR "i" #define SCNo8 "hho" #define SCNo16 "ho" -#define SCNo32 "o" +#define SCNo32 "lo" #define SCNo64 "llo" #define SCNoPTR "o" #define SCNu8 "hhu" #define SCNu16 "hu" -#define SCNu32 "u" +#define SCNu32 "lu" #define SCNu64 "llu" #define SCNuPTR "u" #define SCNx8 "hhx" #define SCNx16 "hx" -#define SCNx32 "x" +#define SCNx32 "lx" #define SCNx64 "llx" #define SCNxPTR "x" #define INT8_C(x) x #define INT16_C(x) x -#define INT32_C(x) x +#define INT32_C(x) x ## l #define INT64_C(x) x ## ll #define UINT8_C(x) x #define UINT16_C(x) x -#define UINT32_C(x) x ## u +#define UINT32_C(x) x ## ul #define UINT64_C(x) x ## ull #endif /* __ARCH_MIPS_INCLUDE_INTTYPES_H */ diff --git a/arch/mips/include/types.h b/arch/mips/include/types.h index f135a517d7af8..10ee5636be0b1 100644 --- a/arch/mips/include/types.h +++ b/arch/mips/include/types.h @@ -69,8 +69,8 @@ typedef unsigned char _uint8_t; typedef signed short _int16_t; typedef unsigned short _uint16_t; -typedef signed int _int32_t; -typedef unsigned int _uint32_t; +typedef signed long _int32_t; +typedef unsigned long _uint32_t; typedef signed long long _int64_t; typedef unsigned long long _uint64_t; From 723a497a549365537f9db4906ab371f0ed34fb84 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 13:50:55 +0900 Subject: [PATCH 29/34] mips: Add _intmax_t and _uintmax_t --- arch/mips/include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/mips/include/types.h b/arch/mips/include/types.h index 10ee5636be0b1..935c66dae8328 100644 --- a/arch/mips/include/types.h +++ b/arch/mips/include/types.h @@ -76,6 +76,9 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; + /* A size is 4 bytes */ #if defined(__SIZE_TYPE__) From ffeba8dbe43f65a18774d7e935987adc7df32b4c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 10 Nov 2020 23:37:04 +0900 Subject: [PATCH 30/34] arch/sim/include/inttypes.h: Fix intptr_t 64-bit size_t/intptr_t/ptrdiff_t are long, not long long, for macOS and Linux. Note: we don't care CONFIG_SIM_M32 on macOS. macOS: spacetanuki% uname -a Darwin spacetanuki.lan 18.7.0 Darwin Kernel Version 18.7.0: Mon Aug 31 20:53:32 PDT 2020; root:xnu-4903.278.44~1/RELEASE_X86_64 x86_64 spacetanuki% cc --version Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin spacetanuki% cc -dM -E - < /dev/null|grep __SIZE_TYPE__ #define __SIZE_TYPE__ long unsigned int spacetanuki% cc -m32 -dM -E - < /dev/null|grep __SIZE_TYPE__ #define __SIZE_TYPE__ long unsigned int spacetanuki% Linux: root@4c2e9e83ac82:/tools# uname -a Linux 4c2e9e83ac82 5.4.39-linuxkit #1 SMP Fri May 8 23:03:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux root@4c2e9e83ac82:/tools# cc --version cc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. root@4c2e9e83ac82:/tools# cc -dM -E - < /dev/null|grep __SIZE_TYPE__ #define __SIZE_TYPE__ long unsigned int root@4c2e9e83ac82:/tools# cc -m32 -dM -E - < /dev/null|grep __SIZE_TYPE__ #define __SIZE_TYPE__ unsigned int root@4c2e9e83ac82:/tools# --- arch/sim/include/inttypes.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/sim/include/inttypes.h b/arch/sim/include/inttypes.h index e0d716a8238da..c45e110b760ea 100644 --- a/arch/sim/include/inttypes.h +++ b/arch/sim/include/inttypes.h @@ -118,17 +118,17 @@ # define UINT64_C(x) x ## ull #if defined(CONFIG_HOST_X86_64) && !defined(CONFIG_SIM_M32) -# define PRIdPTR "lld" -# define PRIiPTR "lli" -# define PRIoPTR "llo" -# define PRIuPTR "llu" -# define PRIxPTR "llx" -# define PRIXPTR "llX" -# define SCNdPTR "lld" -# define SCNiPTR "lli" -# define SCNoPTR "llo" -# define SCNuPTR "llu" -# define SCNxPTR "llx" +# define PRIdPTR "ld" +# define PRIiPTR "li" +# define PRIoPTR "lo" +# define PRIuPTR "lu" +# define PRIxPTR "lx" +# define PRIXPTR "lX" +# define SCNdPTR "ld" +# define SCNiPTR "li" +# define SCNoPTR "lo" +# define SCNuPTR "lu" +# define SCNxPTR "lx" #else # define PRIdPTR "d" # define PRIiPTR "i" From 4640b5ff57946b29f54cfe18039915555188cb66 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 18 Nov 2020 21:28:45 +0900 Subject: [PATCH 31/34] sim: Add _intmax_t and _uintmax_t --- arch/sim/include/types.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/sim/include/types.h b/arch/sim/include/types.h index d9d4fd3aee724..1baf4a73f5bd4 100644 --- a/arch/sim/include/types.h +++ b/arch/sim/include/types.h @@ -76,6 +76,14 @@ typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #define __INT64_DEFINED +#if defined(__APPLE_CC__) +typedef signed long _intmax_t; +typedef unsigned long _uintmax_t; +#else +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; +#endif + #if defined(CONFIG_HOST_X86_64) && !defined(CONFIG_SIM_M32) /* 64-bit build on 64-bit machine: A size is 8 bytes */ From a5e4b2fb6410e055d5094609e18c69d02bf63f7f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 10 Nov 2020 14:39:17 +0900 Subject: [PATCH 32/34] sim: Make int64_t match the host OS --- arch/sim/include/inttypes.h | 36 +++++++++++++++++++++++------------- arch/sim/include/types.h | 10 ++++++++++ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/arch/sim/include/inttypes.h b/arch/sim/include/inttypes.h index c45e110b760ea..68f2dd55c71a3 100644 --- a/arch/sim/include/inttypes.h +++ b/arch/sim/include/inttypes.h @@ -44,78 +44,88 @@ * Pre-processor Definitions ****************************************************************************/ +#if defined(CONFIG_HOST_MACOS) +# define _PRI64PREFIX "ll" +# define _SCN64PREFIX "ll" +# define INT64_C(x) x ## ll +# define UINT64_C(x) x ## ull +#else +# define _PRI64PREFIX "l" +# define _SCN64PREFIX "l" +# define INT64_C(x) x ## l +# define UINT64_C(x) x ## ul +#endif + # define PRId8 "d" # define PRId16 "d" # define PRId32 "d" -# define PRId64 "lld" +# define PRId64 _PRI64PREFIX "d" # define PRIi8 "i" # define PRIi16 "i" # define PRIi32 "i" -# define PRIi64 "lli" +# define PRIi64 _PRI64PREFIX "i" # define PRIo8 "o" # define PRIo16 "o" # define PRIo32 "o" -# define PRIo64 "llo" +# define PRIo64 _PRI64PREFIX "o" # define PRIu8 "u" # define PRIu16 "u" # define PRIu32 "u" -# define PRIu64 "llu" +# define PRIu64 _PRI64PREFIX "u" # define PRIuMAX "llu" # define PRIx8 "x" # define PRIx16 "x" # define PRIx32 "x" -# define PRIx64 "llx" +# define PRIx64 _PRI64PREFIX "x" # define PRIX8 "X" # define PRIX16 "X" # define PRIX32 "X" -# define PRIX64 "llX" +# define PRIX64 _PRI64PREFIX "X" # define SCNd8 "hhd" # define SCNd16 "hd" # define SCNd32 "d" -# define SCNd64 "lld" +# define SCNd64 _SCN64PREFIX "d" # define SCNdMAX "lld" # define SCNi8 "hhi" # define SCNi16 "hi" # define SCNi32 "i" -# define SCNi64 "lli" +# define SCNi64 _SCN64PREFIX "i" # define SCNiMAX "lli" # define SCNo8 "hho" # define SCNo16 "ho" # define SCNo32 "o" -# define SCNo64 "llo" +# define SCNo64 _SCN64PREFIX "o" # define SCNoMAX "llo" # define SCNu8 "hhu" # define SCNu16 "hu" # define SCNu32 "u" -# define SCNu64 "llu" +# define SCNu64 _SCN64PREFIX "u" # define SCNx8 "hhx" # define SCNx16 "hx" # define SCNx32 "x" -# define SCNx64 "llx" +# define SCNx64 _SCN64PREFIX "x" # define INT8_C(x) x # define INT16_C(x) x # define INT32_C(x) x -# define INT64_C(x) x ## ll # define UINT8_C(x) x # define UINT16_C(x) x # define UINT32_C(x) x ## u -# define UINT64_C(x) x ## ull #if defined(CONFIG_HOST_X86_64) && !defined(CONFIG_SIM_M32) # define PRIdPTR "ld" diff --git a/arch/sim/include/types.h b/arch/sim/include/types.h index 1baf4a73f5bd4..955e189b6c769 100644 --- a/arch/sim/include/types.h +++ b/arch/sim/include/types.h @@ -72,8 +72,18 @@ typedef unsigned short _uint16_t; typedef signed int _int32_t; typedef unsigned int _uint32_t; +/* Note about host OS types: + * - int64_t is long long for 64-bit macOS + * - int64_t is long for Ubuntu x86-64 + */ + +#if defined(CONFIG_HOST_MACOS) || !defined(_LP64) typedef signed long long _int64_t; typedef unsigned long long _uint64_t; +#else +typedef signed long _int64_t; +typedef unsigned long _uint64_t; +#endif #define __INT64_DEFINED #if defined(__APPLE_CC__) From bd04899891c4cca79e08cef5c88bfea445b6abb9 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 16 Nov 2020 10:12:13 +0900 Subject: [PATCH 33/34] sim types.h: A workaround for macOS MODULECC --- arch/sim/include/inttypes.h | 2 +- arch/sim/include/types.h | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/sim/include/inttypes.h b/arch/sim/include/inttypes.h index 68f2dd55c71a3..35cef6e7b00b8 100644 --- a/arch/sim/include/inttypes.h +++ b/arch/sim/include/inttypes.h @@ -44,7 +44,7 @@ * Pre-processor Definitions ****************************************************************************/ -#if defined(CONFIG_HOST_MACOS) +#if defined(__APPLE_CC__) || !defined(_LP64) # define _PRI64PREFIX "ll" # define _SCN64PREFIX "ll" # define INT64_C(x) x ## ll diff --git a/arch/sim/include/types.h b/arch/sim/include/types.h index 955e189b6c769..5d0958e7a769c 100644 --- a/arch/sim/include/types.h +++ b/arch/sim/include/types.h @@ -75,9 +75,16 @@ typedef unsigned int _uint32_t; /* Note about host OS types: * - int64_t is long long for 64-bit macOS * - int64_t is long for Ubuntu x86-64 + * + * Note for sim/macOS modules: + * For sim/macOS, usually x86_64-elf-gcc from homebrew is used + * as MODULECC. It seems to be configured as __INT64_TYPE__ == long int. + * The __APPLE_CC__ check below is to workaround it. + * (The host cc defines __APPLE_CC__, while x86_64-elf-gcc doesn't.) + * XXX It is a problem if you need C++ symbols in symtabs for modules. */ -#if defined(CONFIG_HOST_MACOS) || !defined(_LP64) +#if defined(__APPLE_CC__) || !defined(_LP64) typedef signed long long _int64_t; typedef unsigned long long _uint64_t; #else From 3532012b7fcd1f80e88447c4b24a20a77306c02d Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 19 Nov 2020 14:09:39 +0900 Subject: [PATCH 34/34] include/inttypes.h: Provide PRIdMAX and friends using 'j' modifier Replace definitions in other places. --- arch/sim/include/inttypes.h | 8 -------- include/inttypes.h | 15 +++++++++++++++ include/stdint.h | 26 -------------------------- 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/arch/sim/include/inttypes.h b/arch/sim/include/inttypes.h index 35cef6e7b00b8..31942efac2368 100644 --- a/arch/sim/include/inttypes.h +++ b/arch/sim/include/inttypes.h @@ -76,8 +76,6 @@ # define PRIu32 "u" # define PRIu64 _PRI64PREFIX "u" -# define PRIuMAX "llu" - # define PRIx8 "x" # define PRIx16 "x" # define PRIx32 "x" @@ -93,22 +91,16 @@ # define SCNd32 "d" # define SCNd64 _SCN64PREFIX "d" -# define SCNdMAX "lld" - # define SCNi8 "hhi" # define SCNi16 "hi" # define SCNi32 "i" # define SCNi64 _SCN64PREFIX "i" -# define SCNiMAX "lli" - # define SCNo8 "hho" # define SCNo16 "ho" # define SCNo32 "o" # define SCNo64 _SCN64PREFIX "o" -# define SCNoMAX "llo" - # define SCNu8 "hhu" # define SCNu16 "hu" # define SCNu32 "u" diff --git a/include/inttypes.h b/include/inttypes.h index a404bbe142e69..8a3cb4307fe35 100644 --- a/include/inttypes.h +++ b/include/inttypes.h @@ -306,6 +306,21 @@ #define SCNxFAST64 SCNx64 #endif +/* intmax_t/uintmax_t */ + +#define PRIdMAX "jd" +#define PRIiMAX "ji" +#define PRIoMAX "jo" +#define PRIuMAX "ju" +#define PRIxMAX "jx" +#define PRIXMAX "jX" + +#define SCNdMAX "jd" +#define SCNiMAX "ji" +#define SCNoMAX "jo" +#define SCNuMAX "ju" +#define SCNxMAX "jx" + /**************************************************************************** * Type Definitions ****************************************************************************/ diff --git a/include/stdint.h b/include/stdint.h index 70fa0eca631b1..469e3a2372378 100644 --- a/include/stdint.h +++ b/include/stdint.h @@ -147,19 +147,6 @@ # define UINTMAX_MIN UINT64_MIN # define UINTMAX_MAX UINT64_MAX -# define PRIdMAX PRId64 -# define PRIiMAX PRIi64 -# define PRIoMAX PRIo64 -# define PRIuMAX PRIu64 -# define PRIxMAX PRIx64 -# define PRIXMAX PRIX64 - -# define SCNdMAX SCNd64 -# define SCNiMAX SCNi64 -# define SCNoMAX SCNo64 -# define SCNuMAX SCNu64 -# define SCNxMAX SCNx64 - # define INTMAX_C(x) INT64_C(x) # define UINTMAX_C(x) UINT64_C(x) #else @@ -169,19 +156,6 @@ # define UINTMAX_MIN UINT32_MIN # define UINTMAX_MAX UINT32_MAX -# define PRIdMAX PRId32 -# define PRIiMAX PRIi32 -# define PRIoMAX PRIo32 -# define PRIuMAX PRIu32 -# define PRIxMAX PRIx32 -# define PRIXMAX PRIX32 - -# define SCNdMAX SCNd32 -# define SCNiMAX SCNi32 -# define SCNoMAX SCNo32 -# define SCNuMAX SCNu32 -# define SCNxMAX SCNx32 - # define INTMAX_C(x) INT32_C(x) # define UINTMAX_C(x) UINT32_C(x) #endif