diff --git a/config.h b/config.h index 50e34cf4..a05ba4e2 100644 --- a/config.h +++ b/config.h @@ -368,7 +368,7 @@ NAMESPACE_END # pragma GCC diagnostic ignored "-Wunused-function" #endif -#if (defined(_MSC_VER) && _MSC_VER <= 1300) || defined(__MWERKS__) || defined(_STLPORT_VERSION) +#if (defined(_MSC_VER) && _MSC_VER <= 1300) || defined(__MWERKS__) || (defined(_STLPORT_VERSION) && ((_STLPORT_VERSION < 0x450) || defined(_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT))) #define CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION #endif diff --git a/config.recommend b/config.recommend index 8f11bfc0..5564ba0a 100644 --- a/config.recommend +++ b/config.recommend @@ -368,7 +368,7 @@ NAMESPACE_END # pragma GCC diagnostic ignored "-Wunused-function" #endif -#if (defined(_MSC_VER) && _MSC_VER <= 1300) || defined(__MWERKS__) || defined(_STLPORT_VERSION) +#if (defined(_MSC_VER) && _MSC_VER <= 1300) || defined(__MWERKS__) || (defined(_STLPORT_VERSION) && ((_STLPORT_VERSION < 0x450) || defined(_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT))) #define CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION #endif @@ -466,9 +466,10 @@ NAMESPACE_END #else # define CRYPTOPP_CONSTANT(x) static const int x; #endif - + // Linux provides X32, which is 32-bit integers, longs and pointers on x86_64 using the full x86_64 register set. -// Detect via __ILP32__ (http://wiki.debian.org/X32Port). Both GCC and Clang provide the preprocessor macro. +// Detect via __ILP32__ (http://wiki.debian.org/X32Port). However, __ILP32__ shows up in more places than +// the System V ABI specs calls out, like on just about any 32-bit system with Clang. #if ((__ILP32__ >= 1) || (_ILP32 >= 1)) && defined(__x86_64__) #define CRYPTOPP_BOOL_X32 1 #else