|
12 | 12 | #endif /* !defined(__BEGIN_DECLS) */ |
13 | 13 |
|
14 | 14 | #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 |
16 | 20 | #ifdef __APPLE__ |
17 | | -#define __strong_reference(sym,aliassym) __weak_reference(sym,aliassym) |
| 21 | +#define openlibm_strong_reference(sym,aliassym) openlibm_weak_reference(sym,aliassym) |
18 | 22 | #else |
19 | | -#define __strong_reference(sym,aliassym) \ |
| 23 | +#define openlibm_strong_reference(sym,aliassym) \ |
20 | 24 | OLM_DLLEXPORT extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))); |
21 | 25 | #endif /* __APPLE__ */ |
22 | 26 | #endif /* __strong_reference */ |
23 | 27 |
|
24 | 28 | #ifdef __wasm__ |
25 | | -# define __weak_reference(sym,alias) __strong_reference(sym,alias) |
| 29 | +# define openlibm_weak_reference(sym,alias) openlibm_strong_reference(sym,alias) |
26 | 30 | #endif |
27 | 31 |
|
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 |
29 | 37 | #ifdef __ELF__ |
30 | 38 | #ifdef __STDC__ |
31 | | -#define __weak_reference(sym,alias) \ |
| 39 | +#define openlibm_weak_reference(sym,alias) \ |
32 | 40 | __asm__(".weak " #alias); \ |
33 | 41 | __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) \ |
36 | 46 | __asm__(".section .gnu.warning." #sym); \ |
37 | 47 | __asm__(".asciz \"" msg "\""); \ |
38 | 48 | __asm__(".previous") |
39 | 49 | #endif /* __warn_references */ |
40 | 50 | #else |
41 | | -#define __weak_reference(sym,alias) \ |
| 51 | +#define openlibm_weak_reference(sym,alias) \ |
42 | 52 | __asm__(".weak alias"); \ |
43 | 53 | __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) \ |
46 | 58 | __asm__(".section .gnu.warning.sym"); \ |
47 | 59 | __asm__(".asciz \"msg\""); \ |
48 | 60 | __asm__(".previous") |
49 | 61 | #endif /* __warn_references */ |
50 | 62 | #endif /* __STDC__ */ |
51 | 63 | #elif defined(__clang__) /* CLANG */ |
52 | 64 | #ifdef __STDC__ |
53 | | -#define __weak_reference(sym,alias) \ |
| 65 | +#define openlibm_weak_reference(sym,alias) \ |
54 | 66 | __asm__(".weak_reference " #alias); \ |
55 | 67 | __asm__(".set " #alias ", " #sym) |
56 | 68 | #else |
57 | | -#define __weak_reference(sym,alias) \ |
| 69 | +#define openlibm_weak_reference(sym,alias) \ |
58 | 70 | __asm__(".weak_reference alias");\ |
59 | 71 | __asm__(".set alias, sym") |
60 | 72 | #endif |
61 | 73 | #else /* !__ELF__ */ |
62 | 74 | #ifdef __STDC__ |
63 | | -#define __weak_reference(sym,alias) \ |
| 75 | +#define openlibm_weak_reference(sym,alias) \ |
64 | 76 | __asm__(".stabs \"_" #alias "\",11,0,0,0"); \ |
65 | 77 | __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) \ |
68 | 82 | __asm__(".stabs \"" msg "\",30,0,0,0"); \ |
69 | 83 | __asm__(".stabs \"_" #sym "\",1,0,0,0") |
70 | 84 | #endif /* __warn_references */ |
71 | 85 | #else |
72 | | -#define __weak_reference(sym,alias) \ |
| 86 | +#define openlibm_weak_reference(sym,alias) \ |
73 | 87 | __asm__(".stabs \"_/**/alias\",11,0,0,0"); \ |
74 | 88 | __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) \ |
77 | 93 | __asm__(".stabs msg,30,0,0,0"); \ |
78 | 94 | __asm__(".stabs \"_/**/sym\",1,0,0,0") |
79 | 95 | #endif /* __warn_references */ |
|
0 commit comments