Skip to content

Commit 7dc51f6

Browse files
committed
add new stdlib overrides
1 parent 101b55f commit 7dc51f6

File tree

9 files changed

+311
-0
lines changed

9 files changed

+311
-0
lines changed

include/libc/math.h

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,234 @@ typedef double double_t;
2828
#define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
2929
#define fabsf(f) __builtin_fabsf((float)(f))
3030

31+
#define isnan(x) __builtin_isnan
32+
#define isinf(x) __builtin_isinf
33+
#define isfinite(x) __builtin_isfinite
34+
#define signbit(x) __builtin_signbit
35+
36+
#ifdef __cplusplus
37+
extern "C" {
38+
#endif
39+
40+
double acos(double);
41+
float acosf(float);
42+
long double acosl(long double);
43+
44+
double asin(double);
45+
float asinf(float);
46+
long double asinl(long double);
47+
48+
double atan(double);
49+
float atanf(float);
50+
long double atanl(long double);
51+
52+
double atan2(double, double);
53+
float atan2f(float, float);
54+
long double atan2l(long double, long double);
55+
56+
double ceil(double);
57+
float ceilf(float);
58+
long double ceill(long double);
59+
60+
double cos(double);
61+
float cosf(float);
62+
long double cosl(long double);
63+
64+
double cosh(double);
65+
float coshf(float);
66+
long double coshl(long double);
67+
68+
double exp(double);
69+
float expf(float);
70+
long double expl(long double);
71+
72+
double fabs(double);
73+
long double fabsl(long double);
74+
75+
double cosh(double);
76+
float coshf(float);
77+
long double coshl(long double);
78+
79+
double exp(double);
80+
float expf(float);
81+
long double expl(long double);
82+
83+
double floor(double);
84+
float floorf(float);
85+
long double floorl(long double);
86+
87+
double fmod(double, double);
88+
float fmodf(float, float);
89+
long double fmodl(long double, long double);
90+
91+
double pow(double, double);
92+
float powf(float, float);
93+
long double powl(long double, long double);
94+
95+
double frexp(double, int*);
96+
float frexpf(float, int*);
97+
long double frexpl(long double, int*);
98+
99+
double ldexp(double, int);
100+
float ldexpf(float, int);
101+
long double ldexpl(long double, int);
102+
103+
double log(double);
104+
float logf(float);
105+
long double logl(long double);
106+
107+
double log10(double);
108+
float log10f(float);
109+
long double log10l(long double);
110+
111+
double modf(double, double*);
112+
float modff(float, float*);
113+
long double modfl(long double, long double*);
114+
115+
double sin(double);
116+
float sinf(float);
117+
long double sinl(long double);
118+
119+
double sinh(double);
120+
float sinhf(float);
121+
long double sinhl(long double);
122+
123+
124+
double sqrt(double);
125+
float sqrtf(float);
126+
long double sqrtl(long double);
127+
128+
129+
double tan(double);
130+
float tanf(float);
131+
long double tanl(long double);
132+
133+
134+
double tanh(double);
135+
float tanhf(float);
136+
long double tanhl(long double);
137+
138+
139+
double acosh(double);
140+
float acoshf(float);
141+
long double acoshl(long double);
142+
143+
144+
double asinh(double);
145+
float asinhf(float);
146+
long double asinhl(long double);
147+
148+
149+
double atanh(double);
150+
float atanhf(float);
151+
long double atanhl(long double);
152+
153+
154+
double cbrt(double);
155+
float cbrtf(float);
156+
long double cbrtl(long double);
157+
158+
159+
double erf(double);
160+
float erff(float);
161+
long double erfl(long double);
162+
163+
164+
double exp2(double);
165+
float exp2f(float);
166+
long double exp2l(long double);
167+
168+
169+
double expm1(double);
170+
float expm1f(float);
171+
long double expm1l(long double);
172+
173+
174+
double fdim(double, double);
175+
float fdimf(float, float);
176+
long double fdiml(long double, long double);
177+
178+
179+
double erfc(double);
180+
float erfcf(float);
181+
long double erfcl(long double);
182+
183+
184+
double fmax(double, double);
185+
float fmaxf(float, float);
186+
long double fmaxl(long double, long double);
187+
188+
189+
double fmin(double, double);
190+
float fminf(float, float);
191+
long double fminl(long double, long double);
192+
193+
194+
double hypot(double, double);
195+
float hypotf(float, float);
196+
long double hypotl(long double, long double);
197+
198+
199+
double ilogb(double);
200+
float ilogbf(float);
201+
long double ilogbl(long double);
202+
203+
204+
double lgamma(double);
205+
float lgammaf(float);
206+
long double lgammal(long double);
207+
208+
209+
double log1p(double);
210+
float log1pf(float);
211+
long double log1pl(long double);
212+
213+
214+
double log2(double);
215+
float log2f(float);
216+
long double log2l(long double);
217+
218+
double logb(double);
219+
float logbf(float);
220+
long double logbl(long double);
221+
222+
223+
double nearbyint(double);
224+
float nearbyintf(float);
225+
long double nearbyintl(long double);
226+
227+
228+
double nextafter(double, double);
229+
float nextafterf(float, float);
230+
long double nextafterl(long double, long double);
231+
232+
233+
double nexttoward(double, long double);
234+
float nexttowardf(float, long double);
235+
long double nexttowardl(long double, long double);
236+
237+
double remainder(double, double);
238+
float remainderf(float, float);
239+
long double remainderl(long double, long double);
240+
241+
double remquo(double, double, int*);
242+
float remquof(float, float, int*);
243+
long double remquol(long double, long double, int*);
244+
245+
double scalbln(double, long);
246+
float scalblnf(float, long);
247+
long double scalblnl(long double, long);
248+
249+
double scalbn(double, int);
250+
float scalbnf(float, int);
251+
long double scalbnl(long double, int);
252+
253+
double tgamma(double);
254+
float tgammaf(float);
255+
long double tgammal(long double);
256+
257+
#ifdef __cplusplus
258+
}
259+
#endif
260+
31261
#endif

include/libc/stdlib.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ typedef struct {
1818
/* 0x8 */ long long rem;
1919
} lldiv_t;
2020

21+
22+
#ifdef __cplusplus
23+
extern "C" {
24+
#endif
25+
2126
ldiv_t ldiv(long numer, long denom);
2227
lldiv_t lldiv(long long numer, long long denom);
2328

@@ -37,4 +42,10 @@ int snprintf(char* __restrict__ s, size_t n, const char* __restrict__ format, ..
3742
void *malloc( size_t size );
3843
void free(void* ptr);
3944

45+
int posix_memalign(void **memptr, size_t alignment, size_t size);
46+
47+
#ifdef __cplusplus
48+
}
49+
#endif
50+
4051
#endif /* STDLIB_H */
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef __STDLIB_OVERRIDE_CTYPE_H__
2+
#define __STDLIB_OVERRIDE_CTYPE_H__
3+
4+
#define _CTYPE_H
5+
6+
#if __has_include_next(<math.h>)
7+
# include_next <ctype.h>
8+
#endif
9+
10+
#endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __STDLIB_OVERRIDE_LIMITS_H__
2+
#define __STDLIB_OVERRIDE_LIMITS_H__
3+
4+
#define _LIMITS_H
5+
#include "libc/limits.h"
6+
7+
// #if __has_include_next(<limits.h>)
8+
// # include_next <limits.h>
9+
// #endif
10+
11+
#endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __STDLIB_OVERRIDE_MATH_H__
2+
#define __STDLIB_OVERRIDE_MATH_H__
3+
4+
#define _MATH_H
5+
#include "libc/math.h"
6+
7+
#if __has_include_next(<math.h>)
8+
# include_next <math.h>
9+
#endif
10+
11+
#endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __STDLIB_OVERRIDE_STDINT_H__
2+
#define __STDLIB_OVERRIDE_STDINT_H__
3+
4+
#define _STDINT_H
5+
#include "libc/stdint.h"
6+
7+
#if __has_include_next(<stdint.h>)
8+
# include_next <stdint.h>
9+
#endif
10+
11+
#endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __STDLIB_OVERRIDE_STRING_H__
2+
#define __STDLIB_OVERRIDE_STRING_H__
3+
4+
#define _STRING_H
5+
#include "libc/string.h"
6+
7+
#if __has_include_next(<string.h>)
8+
# include_next <string.h>
9+
#endif
10+
11+
#endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __STDLIB_OVERRIDE_WCTYPE_H__
2+
#define __STDLIB_OVERRIDE_WCTYPE_H__
3+
4+
#define _WCTYPE_H
5+
#include "libc/wchar.h"
6+
7+
#if __has_include_next(<math.h>)
8+
# include_next <wctype.h>
9+
#endif
10+
11+
#endif

include/libc/string.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ char* strcpy(char* dst, const char* src);
1717
void* memmove(void* dst, const void* src, size_t size);
1818
int memcmp(const void* lhs, const void* rhs, size_t count);
1919

20+
const char* strpbrk(const char*, const char*);
21+
const char* strrchr(const char*, int);
22+
const void* memchr(const void*, int, size_t);
23+
const char* strstr(const char*, const char*);
24+
2025
#ifdef __cplusplus
2126
}
2227
#endif

0 commit comments

Comments
 (0)