diff --git a/src/cdefs-compat.h b/src/cdefs-compat.h index c7deeb1..09c71fd 100644 --- a/src/cdefs-compat.h +++ b/src/cdefs-compat.h @@ -59,15 +59,21 @@ #endif /* __warn_references */ #endif /* __STDC__ */ #elif defined(__clang__) /* CLANG */ +#if defined(_WIN32) && defined (_X86_) +#define openlibm_symbol_prefix "_" +#else +#define openlibm_symbol_prefix "" +#endif #ifdef __STDC__ #define openlibm_weak_reference(sym,alias) \ - __asm__(".weak_reference " #alias); \ - __asm__(".set " #alias ", " #sym) + __asm__(".weak_reference " openlibm_symbol_prefix #alias); \ + __asm__(".set " openlibm_symbol_prefix #alias ", " openlibm_symbol_prefix #sym) #else #define openlibm_weak_reference(sym,alias) \ - __asm__(".weak_reference alias");\ - __asm__(".set alias, sym") + __asm__(".weak_reference openlibm_symbol_prefix/**/alias");\ + __asm__(".set openlibm_symbol_prefix/**/alias, openlibm_symbol_prefix/**/sym") #endif +#undef oepnlibm_symbol_prefix #else /* !__ELF__ */ #ifdef __STDC__ #define openlibm_weak_reference(sym,alias) \