aboutsummaryrefslogtreecommitdiff
path: root/src/libc/include/stdlib.h
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-11-11 20:35:20 +0100
committerXavier Del Campo Romero <xavi92@disroot.org>2025-11-11 20:55:58 +0100
commit5ce25ae3b5d8666d373f7d7e336546ce8508c213 (patch)
tree4aacb570241c1005590a47ac49adb4b75a8ffd8d /src/libc/include/stdlib.h
parentf7ad4d9216b488f76ed4b3c8e423cd926e134b9d (diff)
downloadwnix-5ce25ae3b5d8666d373f7d7e336546ce8508c213.tar.gz
fixes
Diffstat (limited to 'src/libc/include/stdlib.h')
-rw-r--r--src/libc/include/stdlib.h77
1 files changed, 73 insertions, 4 deletions
diff --git a/src/libc/include/stdlib.h b/src/libc/include/stdlib.h
index 8f97ea3..2704fca 100644
--- a/src/libc/include/stdlib.h
+++ b/src/libc/include/stdlib.h
@@ -34,10 +34,10 @@ typedef struct
int abs(int __v);
long labs(long __v);
long long llabs(long long __v);
-void *malloc(size_t __n);
-void *calloc(size_t __nemb, size_t __size);
-void *realloc(void *__ptr, size_t __size);
-void free(void *__p);
+void *__malloc(size_t __n);
+void *__calloc(size_t __nemb, size_t __size);
+void *__realloc(void *__ptr, size_t __size);
+void __free(void *__p);
long strtol(const char *__s, char **__end, int __base);
long long strtoll(const char *__s, char **__end, int __base);
unsigned long strtoul(const char *__s, char **__end, int __base);
@@ -45,4 +45,73 @@ unsigned long long strtoull(const char *__s, char **__end, int __base);
void __abort(const char *__file, int __lineno);
div_t div(int __numerator, int __denominator);
+#if 1
+#define malloc(__n) __malloc(__n)
+#define calloc(__n, __sz) __calloc(__n, __sz)
+#define realloc(__p, __n) __realloc(__p, __n)
+#define free(__p) __free(__p)
+#else
+#define RED "\x1b[31m"
+#define GREEN "\x1b[32m"
+#define YELLOW "\x1b[33m"
+#define RESET "\x1b[0m"
+
+#define malloc(__n) ({void *__p; \
+ Printf(GREEN "-> %s:%d (%s)", __FILE__, __LINE__, __func__); \
+ __p = __malloc(__n); \
+ Printf(", p=%p" RESET "\n", __p); \
+ int Printf(const char *, ...); \
+ size_t ta_num_free(); \
+ size_t ta_num_used(); \
+ size_t ta_num_fresh(); \
+ Printf("%s: free=%lu, used=%lu, fresh=%lu\n", __func__, \
+ (unsigned long)ta_num_free(), \
+ (unsigned long)ta_num_used(), \
+ (unsigned long)ta_num_fresh()); \
+ __p;})
+
+#define realloc(__p, __n) ({void *__np; \
+ Printf(YELLOW "-> %s:%d (%s)", __FILE__, __LINE__, __func__); \
+ __np = __realloc(__p, __n); \
+ Printf(", np=%p" RESET "\n", __np); \
+ int Printf(const char *, ...); \
+ size_t ta_num_free(); \
+size_t ta_num_used(); \
+size_t ta_num_fresh(); \
+ Printf("%s: free=%lu, used=%lu, fresh=%lu\n", __func__, \
+ (unsigned long)ta_num_free(), \
+ (unsigned long)ta_num_used(), \
+ (unsigned long)ta_num_fresh()); \
+ __np;})
+
+#define calloc(__n, __sz) ({void *__p; \
+ Printf(YELLOW "-> %s:%d (%s)", __FILE__, __LINE__, __func__); \
+ __p = __calloc(__n, __sz); \
+ Printf(", p=%p" RESET "\n", __p); \
+ int Printf(const char *, ...); \
+ size_t ta_num_free(); \
+size_t ta_num_used(); \
+size_t ta_num_fresh(); \
+ Printf("%s: free=%lu, used=%lu, fresh=%lu\n", __func__, \
+ (unsigned long)ta_num_free(), \
+ (unsigned long)ta_num_used(), \
+ (unsigned long)ta_num_fresh()); \
+ __p;})
+
+#define free(__p) ({ \
+ int Printf(const char *, ...); \
+ Printf(RED "<- %s:%d (%s), p=%p" RESET "\n", \
+ __FILE__, __LINE__, __func__, __p); \
+ size_t ta_num_free(); \
+ size_t ta_num_used(); \
+ size_t ta_num_fresh(); \
+ __free(__p);\
+ Printf("%s: free=%lu, used=%lu, fresh=%lu\n", \
+ __func__, \
+ (unsigned long)ta_num_free(), \
+ (unsigned long)ta_num_used(), \
+ (unsigned long)ta_num_fresh()); \
+ })
+#endif
+
#endif