Not all 32-bit MSVC platforms use a leading underscore in symbol names in
object files. Only the old x86 ABI does:
$ dumpbin /exports 'C:\Program Files (x86)\Windows
Kits\10\Lib\10.0.10240.0\ucrt\x86\ucrt.lib' | grep labs
_labs
_llabs
$ dumpbin /exports 'C:\Program Files (x86)\Windows
Kits\10\Lib\10.0.10240.0\ucrt\x64\ucrt.lib' | grep labs
labs
llabs
$ dumpbin /exports 'C:\Program Files (x86)\Windows
Kits\10\Lib\10.0.10240.0\ucrt\arm\ucrt.lib' | grep labs
labs
llabs
$ dumpbin /exports 'C:\Program Files (x86)\Windows
Kits\10\Lib\10.0.10240.0\ucrt\arm64\ucrt.lib' | grep labs
labs
llabs
This patch fixes the 'at-init' module accordingly.
2026-10-19 Bruno Haible <[email protected]>
at-init: Fix for MSVC/arm.
* lib/at-init.h (GL_MSVC_SYMBOL_PREFIX): Test _M_IX86, not _WIN64.
diff --git a/lib/at-init.h b/lib/at-init.h
index 13dd824ea8..acc6eaecff 100644
--- a/lib/at-init.h
+++ b/lib/at-init.h
@@ -72,10 +72,10 @@
/* Avoid an error in the pragma below. */
# undef read
-# ifdef _WIN64
-# define GL_MSVC_SYMBOL_PREFIX ""
-# else
+# ifdef _M_IX86 /* x86 */
# define GL_MSVC_SYMBOL_PREFIX "_"
+# else /* x86_64, arm, arm64 */
+# define GL_MSVC_SYMBOL_PREFIX ""
# endif
# define AT_INIT(function) GL_MSVC_CTOR (function, GL_MSVC_SYMBOL_PREFIX)