Skip to content

Commit 97de1a4

Browse files
authored
Merge pull request #198 from gufe44/netbsd-fix-openlibm_weak_reference
Netbsd fix openlibm weak reference
2 parents 14bf902 + c4dca1e commit 97de1a4

33 files changed

Lines changed: 71 additions & 55 deletions

src/cdefs-compat.h

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,68 +12,84 @@
1212
#endif /* !defined(__BEGIN_DECLS) */
1313

1414
#ifdef __GNUC__
15-
#ifndef __strong_reference
15+
#if defined(__strong_alias) && defined(__NetBSD__)
16+
#define openlibm_strong_reference(sym,alias) __strong_alias(alias,sym)
17+
#elif defined(__strong_reference)
18+
#define openlibm_strong_reference(sym,alias) __strong_reference(sym,alias)
19+
#else
1620
#ifdef __APPLE__
17-
#define __strong_reference(sym,aliassym) __weak_reference(sym,aliassym)
21+
#define openlibm_strong_reference(sym,aliassym) openlibm_weak_reference(sym,aliassym)
1822
#else
19-
#define __strong_reference(sym,aliassym) \
23+
#define openlibm_strong_reference(sym,aliassym) \
2024
OLM_DLLEXPORT extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
2125
#endif /* __APPLE__ */
2226
#endif /* __strong_reference */
2327

2428
#ifdef __wasm__
25-
# define __weak_reference(sym,alias) __strong_reference(sym,alias)
29+
# define openlibm_weak_reference(sym,alias) openlibm_strong_reference(sym,alias)
2630
#endif
2731

28-
#ifndef __weak_reference
32+
#if defined(__weak_alias) && defined(__NetBSD__)
33+
#define openlibm_weak_reference(sym,alias) __weak_alias(alias,sym)
34+
#elif defined(__weak_reference)
35+
#define openlibm_weak_reference(sym,alias) __weak_reference(sym,alias)
36+
#else
2937
#ifdef __ELF__
3038
#ifdef __STDC__
31-
#define __weak_reference(sym,alias) \
39+
#define openlibm_weak_reference(sym,alias) \
3240
__asm__(".weak " #alias); \
3341
__asm__(".equ " #alias ", " #sym)
34-
#ifndef __warn_references
35-
#define __warn_references(sym,msg) \
42+
#ifdef __warn_references
43+
#define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
44+
#else
45+
#define openlibm_warn_references(sym,msg) \
3646
__asm__(".section .gnu.warning." #sym); \
3747
__asm__(".asciz \"" msg "\""); \
3848
__asm__(".previous")
3949
#endif /* __warn_references */
4050
#else
41-
#define __weak_reference(sym,alias) \
51+
#define openlibm_weak_reference(sym,alias) \
4252
__asm__(".weak alias"); \
4353
__asm__(".equ alias, sym")
44-
#ifndef __warn_references
45-
#define __warn_references(sym,msg) \
54+
#ifdef __warn_references
55+
#define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
56+
#else
57+
#define openlibm_warn_references(sym,msg) \
4658
__asm__(".section .gnu.warning.sym"); \
4759
__asm__(".asciz \"msg\""); \
4860
__asm__(".previous")
4961
#endif /* __warn_references */
5062
#endif /* __STDC__ */
5163
#elif defined(__clang__) /* CLANG */
5264
#ifdef __STDC__
53-
#define __weak_reference(sym,alias) \
65+
#define openlibm_weak_reference(sym,alias) \
5466
__asm__(".weak_reference " #alias); \
5567
__asm__(".set " #alias ", " #sym)
5668
#else
57-
#define __weak_reference(sym,alias) \
69+
#define openlibm_weak_reference(sym,alias) \
5870
__asm__(".weak_reference alias");\
5971
__asm__(".set alias, sym")
6072
#endif
6173
#else /* !__ELF__ */
6274
#ifdef __STDC__
63-
#define __weak_reference(sym,alias) \
75+
#define openlibm_weak_reference(sym,alias) \
6476
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
6577
__asm__(".stabs \"_" #sym "\",1,0,0,0")
66-
#ifndef __warn_references
67-
#define __warn_references(sym,msg) \
78+
#ifdef __warn_references
79+
#define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
80+
#else
81+
#define openlibm_warn_references(sym,msg) \
6882
__asm__(".stabs \"" msg "\",30,0,0,0"); \
6983
__asm__(".stabs \"_" #sym "\",1,0,0,0")
7084
#endif /* __warn_references */
7185
#else
72-
#define __weak_reference(sym,alias) \
86+
#define openlibm_weak_reference(sym,alias) \
7387
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
7488
__asm__(".stabs \"_/**/sym\",1,0,0,0")
75-
#ifndef __warn_references
76-
#define __warn_references(sym,msg) \
89+
#ifdef __warn_references
90+
#define openlibm_warn_references(sym,msg) __warn_references(sym,msg)
91+
#else
92+
#define openlibm_warn_references(sym,msg) \
7793
__asm__(".stabs msg,30,0,0,0"); \
7894
__asm__(".stabs \"_/**/sym\",1,0,0,0")
7995
#endif /* __warn_references */

src/e_acos.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,5 @@ __ieee754_acos(double x)
107107
}
108108

109109
#if LDBL_MANT_DIG == 53
110-
__weak_reference(acos, acosl);
110+
openlibm_weak_reference(acos, acosl);
111111
#endif

src/e_asin.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,5 @@ __ieee754_asin(double x)
113113
}
114114

115115
#if LDBL_MANT_DIG == 53
116-
__weak_reference(asin, asinl);
116+
openlibm_weak_reference(asin, asinl);
117117
#endif

src/e_atan2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,5 +125,5 @@ __ieee754_atan2(double y, double x)
125125
}
126126

127127
#if LDBL_MANT_DIG == 53
128-
__weak_reference(atan2, atan2l);
128+
openlibm_weak_reference(atan2, atan2l);
129129
#endif

src/e_hypot.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,5 +127,5 @@ __ieee754_hypot(double x, double y)
127127
}
128128

129129
#if LDBL_MANT_DIG == 53
130-
__weak_reference(hypot, hypotl);
130+
openlibm_weak_reference(hypot, hypotl);
131131
#endif

src/e_remainder.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ __ieee754_remainder(double x, double p)
7575
}
7676

7777
#if LDBL_MANT_DIG == 53
78-
__weak_reference(remainder, remainderl);
78+
openlibm_weak_reference(remainder, remainderl);
7979
#endif

src/e_sqrt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ __ieee754_sqrt(double x)
189189
}
190190

191191
#if (LDBL_MANT_DIG == 53)
192-
__weak_reference(sqrt, sqrtl);
192+
openlibm_weak_reference(sqrt, sqrtl);
193193
#endif
194194

195195
/*

src/s_atan.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,5 @@ atan(double x)
120120
}
121121

122122
#if LDBL_MANT_DIG == 53
123-
__weak_reference(atan, atanl);
123+
openlibm_weak_reference(atan, atanl);
124124
#endif

src/s_cbrt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,5 @@ cbrt(double x)
114114
}
115115

116116
#if (LDBL_MANT_DIG == 53)
117-
__weak_reference(cbrt, cbrtl);
117+
openlibm_weak_reference(cbrt, cbrtl);
118118
#endif

src/s_ceil.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,5 @@ ceil(double x)
7373
}
7474

7575
#if LDBL_MANT_DIG == 53
76-
__weak_reference(ceil, ceill);
76+
openlibm_weak_reference(ceil, ceill);
7777
#endif

0 commit comments

Comments
 (0)