5 #if defined(HAVE_CONFIG_H)
6 #include <config/bitcoin-config.h>
12 #if defined(__i386__) || defined(__arm__)
14 extern "C" int64_t __udivmoddi4(uint64_t u, uint64_t v, uint64_t *rp);
16 extern "C" int64_t __wrap___divmoddi4(int64_t u, int64_t v, int64_t *rp) {
17 int32_t c1 = 0, c2 = 0;
18 int64_t uu = u, vv = v;
23 c1 = ~c1, c2 = ~c2, uu = -uu;
29 w = __udivmoddi4(uu, vv, (uint64_t *)&r);
40 __asm(
".symver log2f_old,log2f@GLIBC_2.1");
41 #elif defined(__amd64__)
42 __asm(
".symver log2f_old,log2f@GLIBC_2.2.5");
43 #elif defined(__arm__)
44 __asm(
".symver log2f_old,log2f@GLIBC_2.4");
45 #elif defined(__aarch64__)
46 __asm(
".symver log2f_old,log2f@GLIBC_2.17");
67 #if defined(HAVE_CONFIG_H) && !defined(HAVE_LARGE_FILE_SUPPORT)
68 extern "C" int fcntl_old(
int fd,
int cmd, ...);
70 __asm(
".symver fcntl_old,fcntl@GLIBC_2.0");
71 #elif defined(__amd64__)
72 __asm(
".symver fcntl_old,fcntl@GLIBC_2.2.5");
73 #elif defined(__arm__)
74 __asm(
".symver fcntl_old,fcntl@GLIBC_2.4");
75 #elif defined(__aarch64__)
76 __asm(
".symver fcntl_old,fcntl@GLIBC_2.17");
79 extern "C" int __wrap_fcntl(
int fd,
int cmd, ...) {
83 ret = fcntl_old(fd, cmd, va_arg(vargs,
void *));
87 extern "C" int __wrap_fcntl64(
int fd,
int cmd, ...) {
91 ret = fcntl_old(fd, cmd, va_arg(vargs,
void *));
103 __asm(
".symver exp_old,exp@GLIBC_2.1");
104 #elif defined(__amd64__)
105 __asm(
".symver exp_old,exp@GLIBC_2.2.5");
106 #elif defined(__arm__)
107 __asm(
".symver exp_old,exp@GLIBC_2.4");
108 #elif defined(__aarch64__)
109 __asm(
".symver exp_old,exp@GLIBC_2.17");
117 __asm(
".symver log_old,log@GLIBC_2.1");
118 #elif defined(__amd64__)
119 __asm(
".symver log_old,log@GLIBC_2.2.5");
120 #elif defined(__arm__)
121 __asm(
".symver log_old,log@GLIBC_2.4");
122 #elif defined(__aarch64__)
123 __asm(
".symver log_old,log@GLIBC_2.17");
131 __asm(
".symver pow_old,pow@GLIBC_2.1");
132 #elif defined(__amd64__)
133 __asm(
".symver pow_old,pow@GLIBC_2.2.5");
134 #elif defined(__arm__)
135 __asm(
".symver pow_old,pow@GLIBC_2.4");
136 #elif defined(__aarch64__)
137 __asm(
".symver pow_old,pow@GLIBC_2.17");
float __wrap_exp(float x)
float __wrap_log2f(float x)
float __wrap_log(float x)
float __wrap_pow(float x)
float exp_old(float x)
Starting with GLIBC_2.29 there is an optimized version of the math functions.