[Bug c/100771] New: Types differ between i386-elf and x86_64-elf -m32

pmenzel+gcc at molgen dot mpg.de gcc-bugzilla@gcc.gnu.org
Wed May 26 14:54:42 GMT 2021


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
```


More information about the Gcc-bugs mailing list