From c444a1aec78926cbeaebe41b03400cd4cc3317fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Mon, 28 Oct 2019 09:09:51 +0100 Subject: [PATCH] Define G_MSVC_SYMBOL_PREFIX correctly for ARM32 Symbols on x86 are prefixed with an underscore but symbols on x64/ARM/ARM64 are not. Relevant information concerning the prefixes for the architectures can be found in the vcpkg project [1,2], where arm and arm64 builds are part of the CI. Specifically, _WIN64 is defined on Windows ARM64, so this issue is only visible when building on ARM32. [1] https://github.com/microsoft/vcpkg/blob/08e74979df124d9360343751cefcae615c2ec5ed/ports/glib/fix-arm-builds.patch [2] https://github.com/microsoft/vcpkg/pull/6116 --- glib/gconstructor.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/glib/gconstructor.h b/glib/gconstructor.h index 9509e595f..407202167 100644 --- a/glib/gconstructor.h +++ b/glib/gconstructor.h @@ -42,13 +42,13 @@ */ /* We need to account for differences between the mangling of symbols - * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed - * with an underscore but symbols on x64 are not. + * for x86 and x64/ARM/ARM64 programs, as symbols on x86 are prefixed + * with an underscore but symbols on x64/ARM/ARM64 are not. */ -#ifdef _WIN64 -#define G_MSVC_SYMBOL_PREFIX "" -#else +#ifdef _M_IX86 #define G_MSVC_SYMBOL_PREFIX "_" +#else +#define G_MSVC_SYMBOL_PREFIX "" #endif #define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX)