Fpcr and Fpsr are [used as 32-bit values](https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/winecrt0/setjmp.c?ref...), but `unsigned long` is 64-bit.
PS: I also hope to ruin some ccaches again :smile:
From: André Zwing nerv@dawncrow.de
--- include/msvcrt/setjmp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/msvcrt/setjmp.h b/include/msvcrt/setjmp.h index 0978e39c18a..f951cc4c25f 100644 --- a/include/msvcrt/setjmp.h +++ b/include/msvcrt/setjmp.h @@ -124,8 +124,8 @@ typedef struct _JUMP_BUFFER unsigned __int64 Fp; unsigned __int64 Lr; unsigned __int64 Sp; - unsigned long Fpcr; - unsigned long Fpsr; + unsigned int Fpcr; + unsigned int Fpsr; double D[8]; } _JUMP_BUFFER;
`unsigned long` is 64bit only on LP64 systems like 64bit Linux.
Win64 is LLP64, so `sizeof(unsigned long) = 4`. I don't see anything wrong with using `unsigned long`.
Compiler explorer link: https://godbolt.org/z/bzzW3frfc
It's only used on the PE side, so you're right, it's just only implicitly documented. Sorry for the noise
This merge request was closed by André Zwing.