prefix symbols with _ for 32-bit x86 Windows (#242)

In a case that I believe can only be hit for Clang i686-*-windows-gnu (AKA MinGW), symbols in asm need to be prefixed with `_`.  Fixes #237
This commit is contained in:
jeremyd2019 2021-09-09 16:04:44 -07:00 committed by GitHub
parent 60dec83e33
commit d0ef09a62d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -59,14 +59,19 @@
#endif /* __warn_references */
#endif /* __STDC__ */
#elif defined(__clang__) /* CLANG */
#if defined(_WIN32) && defined(_X86_)
#define openlibm_asm_symbol_prefix "_"
#else
#define openlibm_asm_symbol_prefix ""
#endif
#ifdef __STDC__
#define openlibm_weak_reference(sym,alias) \
__asm__(".weak_reference " #alias); \
__asm__(".set " #alias ", " #sym)
__asm__(".weak_reference " openlibm_asm_symbol_prefix #alias); \
__asm__(".set " openlibm_asm_symbol_prefix #alias ", " openlibm_asm_symbol_prefix #sym)
#else
#define openlibm_weak_reference(sym,alias) \
__asm__(".weak_reference alias");\
__asm__(".set alias, sym")
__asm__(".weak_reference openlibm_asm_symbol_prefix/**/alias");\
__asm__(".set openlibm_asm_symbol_prefix/**/alias, openlibm_asm_symbol_prefix/**/sym")
#endif
#else /* !__ELF__ */
#ifdef __STDC__