On Mon, 17 Apr 2023, sisyphus wrote:

My question therefore is:
If the 32-bit 12.2.0 version of setjmp.h works fine with 32-bit gcc-13.0.1,
then why was it altered ?

Maybe that's a dumb question - hopefully not sufficiently dumb as to cause
offence.

We made a change to simplify code, in a place which is quite complex and messy. We believed this change wouldn't have any effect, since nothing within mingw-w64 defines USE_NO_MINGW_SETJMP_TWO_ARGS and we didn't believe that any user code would define it either.

As regards the building of 32-bit threaded perl, the main stumbling block
seemed to be that setjmp.h in gcc-13.0.1 no longer checks to see
if USE_NO_MINGW_SETJMP_TWO_ARGS is not defined.

AIUI, the omission of that check for the 64-bit version of setjmp.h is
quite ok - as USE_NO_MINGW_SETJMP_TWO_ARGS is only ever defined for 32-bit
builds.

mingw-w64 never defined USE_NO_MINGW_SETJMP_TWO_ARGS. Do the perl sources define it?

If they do, we wonder why, and would ideally want to see a reproducible example of code where the default setting of not defining this macro breaks things.

On a lower level, since commit 82347ded0d43a80de68b6a35a209717bded5f28a in 2009, mingw-w64's setjmp.h has been using _setjmp3 for i386, while setting the USE_NO_MINGW_SETJMP_TWO_ARGS define makes it revert to using _setjmp.

We weren't aware of any issues with using _setjmp3 (and if there are, maybe we should revisit that change from 2909?) - ideally user code shouldn't need to know or care about this - the defaults are supposed to work.

// Martin



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to