gufe44 2019-10-26 01:05:27 +02:00 committed by GitHub
parent ea065f90cb
commit d4077aa131
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 32 deletions

View file

@ -12,43 +12,49 @@
#endif /* !defined(__BEGIN_DECLS) */ #endif /* !defined(__BEGIN_DECLS) */
#ifdef __GNUC__ #ifdef __GNUC__
#ifndef __strong_reference #if defined(__strong_alias) && defined(__NetBSD__)
#ifdef __APPLE__ #define openlibm_strong_reference(sym,alias) __strong_alias(alias,sym)
#define __strong_reference(sym,aliassym) __weak_reference_compat(sym,aliassym) #elif defined(__strong_reference)
#define openlibm_strong_reference(sym,alias) __strong_reference(sym,alias)
#else #else
#define __strong_reference(sym,aliassym) \ #ifdef __APPLE__
#define openlibm_strong_reference(sym,aliassym) openlibm_weak_reference(sym,aliassym)
#else
#define openlibm_strong_reference(sym,aliassym) \
OLM_DLLEXPORT extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))); OLM_DLLEXPORT extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
#endif /* __APPLE__ */ #endif /* __APPLE__ */
#endif /* __strong_reference */ #endif /* __strong_reference */
#ifdef __wasm__ #ifdef __wasm__
# define __weak_reference_compat(sym,alias) __strong_reference(sym,alias) # define openlibm_weak_reference(sym,alias) openlibm_strong_reference(sym,alias)
#endif #endif
#ifdef __weak_reference #if defined(__weak_alias) && defined(__NetBSD__)
#ifdef __NetBSD__ #define openlibm_weak_reference(sym,alias) __weak_alias(alias,sym)
#define __weak_reference_compat(sym,alias) __weak_alias(alias,sym) #elif defined(__weak_reference)
#else #define openlibm_weak_reference(sym,alias) __weak_reference(sym,alias)
#define __weak_reference_compat(sym,alias) __weak_reference(sym,alias)
#endif
#else #else
#ifdef __ELF__ #ifdef __ELF__
#ifdef __STDC__ #ifdef __STDC__
#define __weak_reference_compat(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".weak " #alias); \ __asm__(".weak " #alias); \
__asm__(".equ " #alias ", " #sym) __asm__(".equ " #alias ", " #sym)
#ifndef __warn_references #ifdef __warn_references
#define __warn_references(sym,msg) \ #define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
#else
#define openlibm_warn_references(sym,msg) \
__asm__(".section .gnu.warning." #sym); \ __asm__(".section .gnu.warning." #sym); \
__asm__(".asciz \"" msg "\""); \ __asm__(".asciz \"" msg "\""); \
__asm__(".previous") __asm__(".previous")
#endif /* __warn_references */ #endif /* __warn_references */
#else #else
#define __weak_reference_compat(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".weak alias"); \ __asm__(".weak alias"); \
__asm__(".equ alias, sym") __asm__(".equ alias, sym")
#ifndef __warn_references #ifdef __warn_references
#define __warn_references(sym,msg) \ #define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
#else
#define openlibm_warn_references(sym,msg) \
__asm__(".section .gnu.warning.sym"); \ __asm__(".section .gnu.warning.sym"); \
__asm__(".asciz \"msg\""); \ __asm__(".asciz \"msg\""); \
__asm__(".previous") __asm__(".previous")
@ -56,30 +62,34 @@
#endif /* __STDC__ */ #endif /* __STDC__ */
#elif defined(__clang__) /* CLANG */ #elif defined(__clang__) /* CLANG */
#ifdef __STDC__ #ifdef __STDC__
#define __weak_reference_compat(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".weak_reference " #alias); \ __asm__(".weak_reference " #alias); \
__asm__(".set " #alias ", " #sym) __asm__(".set " #alias ", " #sym)
#else #else
#define __weak_referenc_compate(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".weak_reference alias");\ __asm__(".weak_reference alias");\
__asm__(".set alias, sym") __asm__(".set alias, sym")
#endif #endif
#else /* !__ELF__ */ #else /* !__ELF__ */
#ifdef __STDC__ #ifdef __STDC__
#define __weak_reference_compat(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \ __asm__(".stabs \"_" #alias "\",11,0,0,0"); \
__asm__(".stabs \"_" #sym "\",1,0,0,0") __asm__(".stabs \"_" #sym "\",1,0,0,0")
#ifndef __warn_references #ifdef __warn_references
#define __warn_references(sym,msg) \ #define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
#else
#define openlibm_warn_references(sym,msg) \
__asm__(".stabs \"" msg "\",30,0,0,0"); \ __asm__(".stabs \"" msg "\",30,0,0,0"); \
__asm__(".stabs \"_" #sym "\",1,0,0,0") __asm__(".stabs \"_" #sym "\",1,0,0,0")
#endif /* __warn_references */ #endif /* __warn_references */
#else #else
#define __weak_reference_compat(sym,alias) \ #define openlibm_weak_reference(sym,alias) \
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \ __asm__(".stabs \"_/**/alias\",11,0,0,0"); \
__asm__(".stabs \"_/**/sym\",1,0,0,0") __asm__(".stabs \"_/**/sym\",1,0,0,0")
#ifndef __warn_references #ifdef __warn_references
#define __warn_references(sym,msg) \ #define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
#else
#define openlibm_warn_references(sym,msg) \
__asm__(".stabs msg,30,0,0,0"); \ __asm__(".stabs msg,30,0,0,0"); \
__asm__(".stabs \"_/**/sym\",1,0,0,0") __asm__(".stabs \"_/**/sym\",1,0,0,0")
#endif /* __warn_references */ #endif /* __warn_references */

View file

@ -107,5 +107,5 @@ __ieee754_acos(double x)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(acos, acosl); openlibm_weak_reference(acos, acosl);
#endif #endif

View file

@ -113,5 +113,5 @@ __ieee754_asin(double x)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(asin, asinl); openlibm_weak_reference(asin, asinl);
#endif #endif

View file

@ -125,5 +125,5 @@ __ieee754_atan2(double y, double x)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(atan2, atan2l); openlibm_weak_reference(atan2, atan2l);
#endif #endif

View file

@ -127,5 +127,5 @@ __ieee754_hypot(double x, double y)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(hypot, hypotl); openlibm_weak_reference(hypot, hypotl);
#endif #endif

View file

@ -75,5 +75,5 @@ __ieee754_remainder(double x, double p)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(remainder, remainderl); openlibm_weak_reference(remainder, remainderl);
#endif #endif

View file

@ -189,7 +189,7 @@ __ieee754_sqrt(double x)
} }
#if (LDBL_MANT_DIG == 53) #if (LDBL_MANT_DIG == 53)
__weak_reference_compat(sqrt, sqrtl); openlibm_weak_reference(sqrt, sqrtl);
#endif #endif
/* /*

View file

@ -120,5 +120,5 @@ atan(double x)
} }
#if LDBL_MANT_DIG == 53 #if LDBL_MANT_DIG == 53
__weak_reference_compat(atan, atanl); openlibm_weak_reference(atan, atanl);
#endif #endif