From: Uros Bizjak Date: Mon, 1 Jun 2020 20:23:51 +0000 (+0200) Subject: i386: Add __attribute__ ((gcc_struct)) to struct fenv [PR95418] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=832c1192eba6dd100e2f757e30ea6373f782ff55;p=gcc.git i386: Add __attribute__ ((gcc_struct)) to struct fenv [PR95418] Windows ABI (MinGW) is different than Linux ABI when bitfileds are involved. The following patch adds __attribute__ ((gcc_struct)) to struct fenv in order to match the layout of x87 state image in memory. 2020-06-01 Uroš Bizjak libatomic/ChangeLog: * config/x86/fenv.c (struct fenv): Add __attribute__ ((gcc_struct)). libgcc/ChangeLog: * config/i386/sfp-exceptions.c (struct fenv): Add __attribute__ ((gcc_struct)). libgfortran/ChangeLog: PR libfortran/95418 * config/fpu-387.h (struct fenv): Add __attribute__ ((gcc_struct)). --- diff --git a/libatomic/config/x86/fenv.c b/libatomic/config/x86/fenv.c index 88622c613f3..138a67ff217 100644 --- a/libatomic/config/x86/fenv.c +++ b/libatomic/config/x86/fenv.c @@ -45,7 +45,7 @@ struct fenv unsigned int __data_offset; unsigned short int __data_selector; unsigned short int __unused5; -}; +} __attribute__ ((gcc_struct)); #ifdef __SSE_MATH__ # define __math_force_eval_div(x, y) \ diff --git a/libgcc/config/i386/sfp-exceptions.c b/libgcc/config/i386/sfp-exceptions.c index 72cb0f4d3bb..3aed0af7c46 100644 --- a/libgcc/config/i386/sfp-exceptions.c +++ b/libgcc/config/i386/sfp-exceptions.c @@ -39,7 +39,7 @@ struct fenv unsigned int __data_offset; unsigned short int __data_selector; unsigned short int __unused5; -}; +} __attribute__ ((gcc_struct)); #ifdef __SSE_MATH__ # define __math_force_eval_div(x, y) \ diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h index 8b5e758c2ca..7ff5acdc933 100644 --- a/libgfortran/config/fpu-387.h +++ b/libgfortran/config/fpu-387.h @@ -85,7 +85,7 @@ struct fenv unsigned short int __data_selector; unsigned short int __unused5; unsigned int __mxcsr; -}; +} __attribute__ ((gcc_struct)); /* Check we can actually store the FPU state in the allocated size. */ _Static_assert (sizeof(struct fenv) <= (size_t) GFC_FPE_STATE_BUFFER_SIZE,