From: Martin Storsjö Date: Mon, 27 Apr 2020 18:31:51 +0000 (+0300) Subject: mingw: Fix arch detection ifdefs for non-x86 mingw platforms X-Git-Tag: VALGRIND_3_16_0~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7359c5fd9f312cddd62146896558d8c9bd2bd4cf;p=thirdparty%2Fvalgrind.git mingw: Fix arch detection ifdefs for non-x86 mingw platforms Don't assume that __MINGW32__ implies x86; Windows runs on ARM/ARM64 as well, and there are mingw toolchains that target those architectures. This mirrors how the MSVC parts of the same expressions are written, as (defined(_WIN32) && defined(_M_IX86)) and (defined(_WIN64) && defined(_M_X64)) - not relying on _WIN32/_WIN64 or __MINGW32__/__MINGW64__ alone to indicate architecture. Change the __MINGW64__ and _WIN64 ifdefs into plain __MINGW32__ and _WIN32 as well, for clarity - these defines mostly imply platform. --- diff --git a/include/valgrind.h b/include/valgrind.h index c8b24a38e8..00e985dca8 100644 --- a/include/valgrind.h +++ b/include/valgrind.h @@ -131,12 +131,13 @@ # define PLAT_x86_darwin 1 #elif defined(__APPLE__) && defined(__x86_64__) # define PLAT_amd64_darwin 1 -#elif (defined(__MINGW32__) && !defined(__MINGW64__)) \ +#elif (defined(__MINGW32__) && defined(__i386__)) \ || defined(__CYGWIN32__) \ || (defined(_WIN32) && defined(_M_IX86)) # define PLAT_x86_win32 1 -#elif defined(__MINGW64__) \ - || (defined(_WIN64) && defined(_M_X64)) +#elif (defined(__MINGW32__) && defined(__x86_64__)) \ + || (defined(_WIN32) && defined(_M_X64)) +/* __MINGW32__ and _WIN32 are defined in 64 bit mode as well. */ # define PLAT_amd64_win64 1 #elif defined(__linux__) && defined(__i386__) # define PLAT_x86_linux 1