Skip to content

Commit 13a2d53

Browse files
committed
add new stdlib overrides
1 parent 101b55f commit 13a2d53

File tree

9 files changed

+313
-0
lines changed

9 files changed

+313
-0
lines changed

include/libc/math.h

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,235 @@ 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+
// float fabsf(float);
74+
long double fabsl(long double);
75+
76+
double cosh(double);
77+
float coshf(float);
78+
long double coshl(long double);
79+
80+
double exp(double);
81+
float expf(float);
82+
long double expl(long double);
83+
84+
double floor(double);
85+
float floorf(float);
86+
long double floorl(long double);
87+
88+
double fmod(double, double);
89+
float fmodf(float, float);
90+
long double fmodl(long double, long double);
91+
92+
double pow(double, double);
93+
float powf(float, float);
94+
long double powl(long double, long double);
95+
96+
double frexp(double, int*);
97+
float frexpf(float, int*);
98+
long double frexpl(long double, int*);
99+
100+
double ldexp(double, int);
101+
float ldexpf(float, int);
102+
long double ldexpl(long double, int);
103+
104+
double log(double);
105+
float logf(float);
106+
long double logl(long double);
107+
108+
double log10(double);
109+
float log10f(float);
110+
long double log10l(long double);
111+
112+
double modf(double, double*);
113+
float modff(float, float*);
114+
long double modfl(long double, long double*);
115+
116+
double sin(double);
117+
float sinf(float);
118+
long double sinl(long double);
119+
120+
double sinh(double);
121+
float sinhf(float);
122+
long double sinhl(long double);
123+
124+
125+
double sqrt(double);
126+
float sqrtf(float);
127+
long double sqrtl(long double);
128+
129+
130+
double tan(double);
131+
float tanf(float);
132+
long double tanl(long double);
133+
134+
135+
double tanh(double);
136+
float tanhf(float);
137+
long double tanhl(long double);
138+
139+
140+
double acosh(double);
141+
float acoshf(float);
142+
long double acoshl(long double);
143+
144+
145+
double asinh(double);
146+
float asinhf(float);
147+
long double asinhl(long double);
148+
149+
150+
double atanh(double);
151+
float atanhf(float);
152+
long double atanhl(long double);
153+
154+
155+
double cbrt(double);
156+
float cbrtf(float);
157+
long double cbrtl(long double);
158+
159+
160+
double erf(double);
161+
float erff(float);
162+
long double erfl(long double);
163+
164+
165+
double exp2(double);
166+
float exp2f(float);
167+
long double exp2l(long double);
168+
169+
170+
double expm1(double);
171+
float expm1f(float);
172+
long double expm1l(long double);
173+
174+
175+
double fdim(double, double);
176+
float fdimf(float, float);
177+
long double fdiml(long double, long double);
178+
179+
180+
double erfc(double);
181+
float erfcf(float);
182+
long double erfcl(long double);
183+
184+
185+
double fmax(double, double);
186+
float fmaxf(float, float);
187+
long double fmaxl(long double, long double);
188+
189+
190+
double fmin(double, double);
191+
float fminf(float, float);
192+
long double fminl(long double, long double);
193+
194+
195+
double hypot(double, double);
196+
float hypotf(float, float);
197+
long double hypotl(long double, long double);
198+
199+
200+
double ilogb(double);
201+
float ilogbf(float);
202+
long double ilogbl(long double);
203+
204+
205+
double lgamma(double);
206+
float lgammaf(float);
207+
long double lgammal(long double);
208+
209+
210+
double log1p(double);
211+
float log1pf(float);
212+
long double log1pl(long double);
213+
214+
215+
double log2(double);
216+
float log2f(float);
217+
long double log2l(long double);
218+
219+
double logb(double);
220+
float logbf(float);
221+
long double logbl(long double);
222+
223+
224+
double nearbyint(double);
225+
float nearbyintf(float);
226+
long double nearbyintl(long double);
227+
228+
229+
double nextafter(double, double);
230+
float nextafterf(float, float);
231+
long double nextafterl(long double, long double);
232+
233+
234+
double nexttoward(double, long double);
235+
float nexttowardf(float, long double);
236+
long double nexttowardl(long double, long double);
237+
238+
double remainder(double, double);
239+
float remainderf(float, float);
240+
long double remainderl(long double, long double);
241+
242+
double remquo(double, double, int*);
243+
float remquof(float, float, int*);
244+
long double remquol(long double, long double, int*);
245+
246+
double scalbln(double, long);
247+
float scalblnf(float, long);
248+
long double scalblnl(long double, long);
249+
250+
double scalbn(double, int);
251+
float scalbnf(float, int);
252+
long double scalbnl(long double, int);
253+
254+
double tgamma(double);
255+
float tgammaf(float);
256+
long double tgammal(long double);
257+
258+
#ifdef __cplusplus
259+
}
260+
#endif
261+
31262
#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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ 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+
// wchar_t* wmemchr(wchar_t*, wchar_t, size_t);
24+
const char* strstr(const char*, const char*);
25+
2026
#ifdef __cplusplus
2127
}
2228
#endif

0 commit comments

Comments
 (0)