mirror of
https://git.planet-casio.com/Lephenixnoir/OpenLibm.git
synced 2024-12-29 13:03:42 +01:00
Merge pull request #198 from gufe44/netbsd-fix-openlibm_weak_reference
Netbsd fix openlibm weak reference
This commit is contained in:
commit
97de1a46a9
33 changed files with 72 additions and 56 deletions
|
@ -12,37 +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(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(sym,alias) __strong_reference(sym,alias)
|
# define openlibm_weak_reference(sym,alias) openlibm_strong_reference(sym,alias)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __weak_reference
|
#if defined(__weak_alias) && defined(__NetBSD__)
|
||||||
|
#define openlibm_weak_reference(sym,alias) __weak_alias(alias,sym)
|
||||||
|
#elif defined(__weak_reference)
|
||||||
|
#define openlibm_weak_reference(sym,alias) __weak_reference(sym,alias)
|
||||||
|
#else
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
#define __weak_reference(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(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")
|
||||||
|
@ -50,30 +62,34 @@
|
||||||
#endif /* __STDC__ */
|
#endif /* __STDC__ */
|
||||||
#elif defined(__clang__) /* CLANG */
|
#elif defined(__clang__) /* CLANG */
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
#define __weak_reference(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_reference(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(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(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 */
|
||||||
|
|
|
@ -107,5 +107,5 @@ __ieee754_acos(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(acos, acosl);
|
openlibm_weak_reference(acos, acosl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -113,5 +113,5 @@ __ieee754_asin(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(asin, asinl);
|
openlibm_weak_reference(asin, asinl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -125,5 +125,5 @@ __ieee754_atan2(double y, double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(atan2, atan2l);
|
openlibm_weak_reference(atan2, atan2l);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -127,5 +127,5 @@ __ieee754_hypot(double x, double y)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(hypot, hypotl);
|
openlibm_weak_reference(hypot, hypotl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -75,5 +75,5 @@ __ieee754_remainder(double x, double p)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(remainder, remainderl);
|
openlibm_weak_reference(remainder, remainderl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -189,7 +189,7 @@ __ieee754_sqrt(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(sqrt, sqrtl);
|
openlibm_weak_reference(sqrt, sqrtl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -120,5 +120,5 @@ atan(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(atan, atanl);
|
openlibm_weak_reference(atan, atanl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -114,5 +114,5 @@ cbrt(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(cbrt, cbrtl);
|
openlibm_weak_reference(cbrt, cbrtl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -73,5 +73,5 @@ ceil(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(ceil, ceill);
|
openlibm_weak_reference(ceil, ceill);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -85,5 +85,5 @@ cos(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(cos, cosl);
|
openlibm_weak_reference(cos, cosl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,5 +43,5 @@ cproj(double complex z)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(cproj, cprojl);
|
openlibm_weak_reference(cproj, cprojl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -110,5 +110,5 @@ csqrt(double complex z)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(csqrt, csqrtl);
|
openlibm_weak_reference(csqrt, csqrtl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -392,5 +392,5 @@ exp2(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(exp2, exp2l);
|
openlibm_weak_reference(exp2, exp2l);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -74,5 +74,5 @@ floor(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(floor, floorl);
|
openlibm_weak_reference(floor, floorl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -280,5 +280,5 @@ fma(double x, double y, double z)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(fma, fmal);
|
openlibm_weak_reference(fma, fmal);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -52,5 +52,5 @@ frexp(double x, int *eptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(frexp, frexpl);
|
openlibm_weak_reference(frexp, frexpl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -63,4 +63,4 @@ __isinfl(long double e)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__weak_reference(__isinff, isinff);
|
openlibm_weak_reference(__isinff, isinff);
|
||||||
|
|
|
@ -64,4 +64,4 @@ __isnanl(long double e)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__weak_reference(__isnanf, isnanf);
|
openlibm_weak_reference(__isnanf, isnanf);
|
||||||
|
|
|
@ -45,5 +45,5 @@ logb(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(logb, logbl);
|
openlibm_weak_reference(logb, logbl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -120,5 +120,5 @@ nanf(const char *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(nan, nanl);
|
openlibm_weak_reference(nan, nanl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -77,7 +77,7 @@ nextafter(double x, double y)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(nextafter, nexttoward);
|
openlibm_weak_reference(nextafter, nexttoward);
|
||||||
__weak_reference(nextafter, nexttowardl);
|
openlibm_weak_reference(nextafter, nexttowardl);
|
||||||
__weak_reference(nextafter, nextafterl);
|
openlibm_weak_reference(nextafter, nextafterl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -77,4 +77,4 @@ nextafterl(long double x, long double y)
|
||||||
return ux.e;
|
return ux.e;
|
||||||
}
|
}
|
||||||
|
|
||||||
__strong_reference(nextafterl, nexttowardl);
|
openlibm_strong_reference(nextafterl, nexttowardl);
|
||||||
|
|
|
@ -154,5 +154,5 @@ fixup:
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(remquo, remquol);
|
openlibm_weak_reference(remquo, remquol);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -88,5 +88,5 @@ rint(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(rint, rintl);
|
openlibm_weak_reference(rint, rintl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,8 +59,8 @@ scalbn (double x, int n)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(scalbn, ldexpl);
|
openlibm_weak_reference(scalbn, ldexpl);
|
||||||
__weak_reference(scalbn, scalbnl);
|
openlibm_weak_reference(scalbn, scalbnl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__strong_reference(scalbn, ldexp);
|
openlibm_strong_reference(scalbn, ldexp);
|
||||||
|
|
|
@ -54,4 +54,4 @@ scalbnf (float x, int n)
|
||||||
return x*twom25;
|
return x*twom25;
|
||||||
}
|
}
|
||||||
|
|
||||||
__strong_reference(scalbnf, ldexpf);
|
openlibm_strong_reference(scalbnf, ldexpf);
|
||||||
|
|
|
@ -67,4 +67,4 @@ scalbnl (long double x, int n)
|
||||||
return u.e*0x1p-128;
|
return u.e*0x1p-128;
|
||||||
}
|
}
|
||||||
|
|
||||||
__strong_reference(scalbnl, ldexpl);
|
openlibm_strong_reference(scalbnl, ldexpl);
|
||||||
|
|
|
@ -85,5 +85,5 @@ sin(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(sin, sinl);
|
openlibm_weak_reference(sin, sinl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -146,5 +146,5 @@ sincos(double x, double * s, double * c)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(sincos, sincosl);
|
openlibm_weak_reference(sincos, sincosl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,5 +79,5 @@ tan(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (LDBL_MANT_DIG == 53)
|
#if (LDBL_MANT_DIG == 53)
|
||||||
__weak_reference(tan, tanl);
|
openlibm_weak_reference(tan, tanl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -63,5 +63,5 @@ trunc(double x)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(trunc, truncl);
|
openlibm_weak_reference(trunc, truncl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,5 +21,5 @@ cabs(double complex z)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LDBL_MANT_DIG == 53
|
#if LDBL_MANT_DIG == 53
|
||||||
__weak_reference(cabs, cabsl);
|
openlibm_weak_reference(cabs, cabsl);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue