diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2020-06-01 22:23:51 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2020-06-01 22:29:20 +0200 |
commit | 832c1192eba6dd100e2f757e30ea6373f782ff55 (patch) | |
tree | 6ee3bf871a48de7e3054ec6dbd5e50d2b23ec97c | |
parent | 88f48e2967ead9be262483618238efa9c7c842ec (diff) | |
download | gcc-832c1192eba6dd100e2f757e30ea6373f782ff55.zip gcc-832c1192eba6dd100e2f757e30ea6373f782ff55.tar.gz gcc-832c1192eba6dd100e2f757e30ea6373f782ff55.tar.bz2 |
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 <ubizjak@gmail.com>
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)).
-rw-r--r-- | libatomic/config/x86/fenv.c | 2 | ||||
-rw-r--r-- | libgcc/config/i386/sfp-exceptions.c | 2 | ||||
-rw-r--r-- | libgfortran/config/fpu-387.h | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/libatomic/config/x86/fenv.c b/libatomic/config/x86/fenv.c index 88622c6..138a67f 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 72cb0f4..3aed0af 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 8b5e758..7ff5acd 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, |