|
|
@ -1326,19 +1326,19 @@ extern int fdatasync(int fildes); |
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* When there is no sigsetjmp, its functionality is provided by plain |
|
|
|
* When there is no sigsetjmp, its functionality is provided by plain |
|
|
|
* setjmp. We now support the case only on Windows. However, it seems |
|
|
|
* setjmp. We now support the case only on Windows. However, it seems |
|
|
|
* that MinGW-64 has some longstanding issues in its setjmp support, |
|
|
|
* that MinGW-64 has some longstanding issues in its setjmp support when |
|
|
|
* so on that toolchain we cheat and use gcc's builtins. |
|
|
|
* building with MSVCRT, so on that toolchain we cheat and use gcc's builtins. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
#ifdef WIN32 |
|
|
|
#ifdef WIN32 |
|
|
|
#ifdef __MINGW64__ |
|
|
|
#if defined(__MINGW64__) && !defined(_UCRT) |
|
|
|
typedef intptr_t sigjmp_buf[5]; |
|
|
|
typedef intptr_t sigjmp_buf[5]; |
|
|
|
#define sigsetjmp(x,y) __builtin_setjmp(x) |
|
|
|
#define sigsetjmp(x,y) __builtin_setjmp(x) |
|
|
|
#define siglongjmp __builtin_longjmp |
|
|
|
#define siglongjmp __builtin_longjmp |
|
|
|
#else /* !__MINGW64__ */ |
|
|
|
#else /* !defined(__MINGW64__) || defined(_UCRT) */ |
|
|
|
#define sigjmp_buf jmp_buf |
|
|
|
#define sigjmp_buf jmp_buf |
|
|
|
#define sigsetjmp(x,y) setjmp(x) |
|
|
|
#define sigsetjmp(x,y) setjmp(x) |
|
|
|
#define siglongjmp longjmp |
|
|
|
#define siglongjmp longjmp |
|
|
|
#endif /* __MINGW64__ */ |
|
|
|
#endif /* defined(__MINGW64__) && !defined(_UCRT) */ |
|
|
|
#endif /* WIN32 */ |
|
|
|
#endif /* WIN32 */ |
|
|
|
|
|
|
|
|
|
|
|
/* /port compatibility functions */ |
|
|
|
/* /port compatibility functions */ |
|
|
|