https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100771
Bug ID: 100771 Summary: Types differ between i386-elf and x86_64-elf -m32 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: pmenzel+gcc at molgen dot mpg.de Target Milestone: --- coreboot still builds 32-bit objects(?), and passes `-m32` for “64-bit compilers”. Doing that, sometimes there are type differences, which is unexpected. For GCC 8.3.0: ``` $ diff -u <(:|/dev/shm/coreboot/util/crossgcc/xgcc/bin/i386-elf-gcc -E -dM -|sort) <(:|/dev/shm/coreboot/util/crossgcc/xgcc/bin/x86_64-elf-gcc -m32 -E -dM -|sort) --- /dev/fd/63 2021-05-26 16:51:51.948000000 +0200 +++ /dev/fd/62 2021-05-26 16:51:51.948000000 +0200 @@ -132,18 +132,23 @@ #define __FLT_MIN_EXP__ (-125) #define __FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F #define __FLT_RADIX__ 2 +#define __FXSR__ 1 #define __GCC_ASM_FLAG_OUTPUTS__ 1 -#define __GCC_ATOMIC_BOOL_LOCK_FREE 1 -#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1 -#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 1 -#define __GCC_ATOMIC_CHAR_LOCK_FREE 1 -#define __GCC_ATOMIC_INT_LOCK_FREE 1 -#define __GCC_ATOMIC_LLONG_LOCK_FREE 1 -#define __GCC_ATOMIC_LONG_LOCK_FREE 1 -#define __GCC_ATOMIC_POINTER_LOCK_FREE 1 -#define __GCC_ATOMIC_SHORT_LOCK_FREE 1 +#define __GCC_ATOMIC_BOOL_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR_LOCK_FREE 2 +#define __GCC_ATOMIC_INT_LOCK_FREE 2 +#define __GCC_ATOMIC_LLONG_LOCK_FREE 2 +#define __GCC_ATOMIC_LONG_LOCK_FREE 2 +#define __GCC_ATOMIC_POINTER_LOCK_FREE 2 +#define __GCC_ATOMIC_SHORT_LOCK_FREE 2 #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 -#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 1 +#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __GCC_IEC_559 2 #define __GCC_IEC_559_COMPLEX 2 #define __GNUC__ 11 @@ -200,10 +205,12 @@ #define __INTMAX_MAX__ 0x7fffffffffffffffLL #define __INTMAX_TYPE__ long long int #define __INTMAX_WIDTH__ 64 -#define __INTPTR_MAX__ 0x7fffffffL -#define __INTPTR_TYPE__ long int +#define __INTPTR_MAX__ 0x7fffffff +#define __INTPTR_TYPE__ int #define __INTPTR_WIDTH__ 32 #define __INT_WIDTH__ 32 +#define __k8 1 +#define __k8__ 1 #define __LAHF_SAHF__ 1 #define __LDBL_DECIMAL_DIG__ 21 #define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L @@ -225,13 +232,14 @@ #define __LONG_LONG_WIDTH__ 64 #define __LONG_MAX__ 0x7fffffffL #define __LONG_WIDTH__ 32 +#define __MMX__ 1 #define __NO_INLINE__ 1 #define __ORDER_BIG_ENDIAN__ 4321 #define __ORDER_LITTLE_ENDIAN__ 1234 #define __ORDER_PDP_ENDIAN__ 3412 #define __PRAGMA_REDEFINE_EXTNAME 1 -#define __PTRDIFF_MAX__ 0x7fffffffL -#define __PTRDIFF_TYPE__ long int +#define __PTRDIFF_MAX__ 0x7fffffff +#define __PTRDIFF_TYPE__ int #define __PTRDIFF_WIDTH__ 32 #define __REGISTER_PREFIX__ #define __SCHAR_MAX__ 0x7f @@ -244,7 +252,7 @@ #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __SIG_ATOMIC_TYPE__ int #define __SIG_ATOMIC_WIDTH__ 32 -#define __SIZE_MAX__ 0xffffffffUL +#define __SIZE_MAX__ 0xffffffffU #define __SIZEOF_DOUBLE__ 8 #define __SIZEOF_FLOAT128__ 16 #define __SIZEOF_FLOAT__ 4 @@ -259,14 +267,15 @@ #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WCHAR_T__ 4 #define __SIZEOF_WINT_T__ 4 -#define __SIZE_TYPE__ long unsigned int +#define __SIZE_TYPE__ unsigned int #define __SIZE_WIDTH__ 32 +#define __SSE__ 1 +#define __SSE2__ 1 #define __STDC__ 1 #define __STDC_HOSTED__ 1 #define __STDC_UTF_16__ 1 #define __STDC_UTF_32__ 1 #define __STDC_VERSION__ 201710L -#define __tune_i386__ 1 #define __UINT16_C(c) c #define __UINT16_MAX__ 0xffff #define __UINT16_TYPE__ short unsigned int @@ -298,8 +307,8 @@ #define __UINTMAX_C(c) c ## ULL #define __UINTMAX_MAX__ 0xffffffffffffffffULL #define __UINTMAX_TYPE__ long long unsigned int -#define __UINTPTR_MAX__ 0xffffffffUL -#define __UINTPTR_TYPE__ long unsigned int +#define __UINTPTR_MAX__ 0xffffffffU +#define __UINTPTR_TYPE__ unsigned int #define __USER_LABEL_PREFIX__ #define __VERSION__ "11.1.0" #define __WCHAR_MAX__ 0x7fffffff ```