SEH is not implemented yet and needs to be disabled in mingw/winnt.cc. Disabling every SEH function that uses references to these macros might trigger significant refactoring, and to avoid this, required macros are defined with 0. It is needed only for compilation. A comment with an explanation will be added.
It looks like IL32P64 works. It has been tested on OpenSSL, OpenBLAS, libjpeg-turbo, and FFmpeg packages. No issues have been detected with it. Correct, stack checking cannot be explicitly disabled by the user. It will be interesting to know cases when it is needed. GCC uses stack probing only when the stack size is exceeded; size optimization is not an option then. Regards, Evgeny -----Original Message----- Friday, February 23, 2024 6:16 PM Richard Sandiford wrote: > + > +#undef TARGET_SEH > +#define TARGET_SEH 0 > + > +#define SSE_REGNO_P(N) 0 > +#define GENERAL_REGNO_P(N) 0 Could you add a comment to explain how these two macros are consumed? What is the effect of saying that everything is neither a general register nor an SSE register? > +#define SEH_MAX_FRAME_SIZE 0 > +/* Windows64 continues to use a 32-bit long type. */ #undef > +LONG_TYPE_SIZE #define LONG_TYPE_SIZE 32 Just curious: this is AFAIK the first IL32P64 ABI for AArch64. Do things Just Work, including for things like arm_neon.h and other ACLE header files? I'm pleasantly surprised if so :) I suppose this is more of a generic mingw/cygwin question, but does this mean that stack checking cannot be explicitly disabled by a user who "knows what they are doing"? Thanks, Richard