diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-07-04 02:54:54 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-09-08 21:10:23 +0200 |
| commit | a0672be24d53ec78d1a2567cf60d9f774b0d158a (patch) | |
| tree | 738e4880f5afd01802751e3847b36a4ea6eb3a7a /src/libc | |
| parent | bb49e6bf0e4c299ad860a78441a58b7c3678bed0 (diff) | |
| download | wnix-a0672be24d53ec78d1a2567cf60d9f774b0d158a.tar.gz | |
Do not rely on PSXSDK libc or _start
Diffstat (limited to 'src/libc')
| -rw-r--r-- | src/libc/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/libc/include/stddef.h | 8 | ||||
| -rw-r--r-- | src/libc/include/stdlib.h | 7 | ||||
| -rw-r--r-- | src/libc/include/string.h | 12 | ||||
| -rw-r--r-- | src/libc/src/memcmp.c | 12 | ||||
| -rw-r--r-- | src/libc/src/memcpy.c | 13 | ||||
| -rw-r--r-- | src/libc/src/memset.c | 7 | ||||
| -rw-r--r-- | src/libc/src/strchr.c | 11 | ||||
| -rw-r--r-- | src/libc/src/strlen.c | 12 |
9 files changed, 90 insertions, 0 deletions
diff --git a/src/libc/CMakeLists.txt b/src/libc/CMakeLists.txt new file mode 100644 index 0000000..b9bb597 --- /dev/null +++ b/src/libc/CMakeLists.txt @@ -0,0 +1,8 @@ +set(inc "include") +set(src +"src/memcpy.c" +"src/memset.c" +"src/strlen.c" +) +add_library(c ${src}) +target_include_directories(c PUBLIC ${inc}) diff --git a/src/libc/include/stddef.h b/src/libc/include/stddef.h new file mode 100644 index 0000000..123e46f --- /dev/null +++ b/src/libc/include/stddef.h @@ -0,0 +1,8 @@ +#ifndef _STDDEF_H +#define _STDDEF_H + +#define NULL ((void *)0) + +typedef unsigned long size_t; + +#endif diff --git a/src/libc/include/stdlib.h b/src/libc/include/stdlib.h new file mode 100644 index 0000000..79d3122 --- /dev/null +++ b/src/libc/include/stdlib.h @@ -0,0 +1,7 @@ +#ifndef _STDLIB_H +#define _STDLIB_H + +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +#endif diff --git a/src/libc/include/string.h b/src/libc/include/string.h new file mode 100644 index 0000000..7efda4e --- /dev/null +++ b/src/libc/include/string.h @@ -0,0 +1,12 @@ +#ifndef _STRING_H +#define _STRING_H + +#include <stddef.h> + +int memcmp(const void *__s1, const void *__s2, size_t __n); +void *memcpy(void *__dst, const void *__src, size_t __n); +void *memset(void *__dst, int __c, size_t __n); +char *strchr(const char *__s, int __n); +size_t strlen(const char *__s); + +#endif diff --git a/src/libc/src/memcmp.c b/src/libc/src/memcmp.c new file mode 100644 index 0000000..f24d300 --- /dev/null +++ b/src/libc/src/memcmp.c @@ -0,0 +1,12 @@ +#include <string.h> + +int memcmp(const void *const s1, const void *const s2, const size_t n) +{ + const unsigned char *a = s1, *b = s2; + + for (size_t i = 0; i < n; i++, a++, b++) + if (*a != *b) + return *a - *b; + + return 0; +} diff --git a/src/libc/src/memcpy.c b/src/libc/src/memcpy.c new file mode 100644 index 0000000..7014e63 --- /dev/null +++ b/src/libc/src/memcpy.c @@ -0,0 +1,13 @@ +#include <string.h> +#include <stddef.h> + +void *memcpy(void *const dst, const void *const src, const size_t n) +{ + unsigned char *d = dst; + const unsigned char *s = src; + + for (size_t i = 0; i < n; i++) + *d++ = *s++; + + return dst; +} diff --git a/src/libc/src/memset.c b/src/libc/src/memset.c new file mode 100644 index 0000000..d3f00c1 --- /dev/null +++ b/src/libc/src/memset.c @@ -0,0 +1,7 @@ +#include <string.h> +#include <stddef.h> + +void *memset(void *const dst, const int c, const size_t n) +{ + return NULL; +} diff --git a/src/libc/src/strchr.c b/src/libc/src/strchr.c new file mode 100644 index 0000000..3a1fd0b --- /dev/null +++ b/src/libc/src/strchr.c @@ -0,0 +1,11 @@ +#include <string.h> +#include <stddef.h> + +char *strchr(const char *s, const int n) +{ + for (; *s; s++) + if (*s == n) + return (char *)s; + + return NULL; +} diff --git a/src/libc/src/strlen.c b/src/libc/src/strlen.c new file mode 100644 index 0000000..43efcc5 --- /dev/null +++ b/src/libc/src/strlen.c @@ -0,0 +1,12 @@ +#include <string.h> +#include <stddef.h> + +size_t strlen(const char *s) +{ + size_t ret = 0; + + while (*s++) + ret++; + + return ret; +} |
