26 Commits

Author SHA1 Message Date
d3030d2111 libc: Stub out strtod() 2022-11-09 11:37:52 +01:00
c6ce7a5358 libc: Add bsearch (with a test!!) 2022-11-06 17:34:35 +01:00
1025248cc7 libc: Add qsort (with a test!!) 2022-11-06 17:16:08 +01:00
da182f1c2f libc: Add mktemp() and mkdtemp(), along with a test for mktemp 2022-11-05 18:07:45 +01:00
534500cda0 Implement enough runtime for binutils to compile 2022-10-31 12:29:53 +01:00
7bd1cba1e3 libc: Stub out bsearch() 2022-10-30 20:02:03 +01:00
0d443385e9 libc: Add system() 2022-10-30 19:43:37 +01:00
32e09d3417 libc: Stub out more functionality so part of binutils builds 2022-10-29 09:39:12 +02:00
d93a4062a2 libc: Do not use the heavy variadic syscall() function for wrappers
That function is meant more for user programs, and should still be rarely used, since it's not portable.
Instead, we already know the number of arguments. We just call __lc_fast_syscallN, which also sets errno.
2022-10-27 17:42:00 +02:00
19ee21ae5a libc: Make string_to_integer_type static 2022-10-23 12:28:25 +02:00
35616993f8 libc: Add div(), ldiv(), and lldiv() 2022-10-23 12:26:48 +02:00
43180b777e libc: Stub out qsort() 2022-10-23 11:19:08 +02:00
51580bb846 libc: Add abs(), labs() and llabs()
Just needed to alias them to GCC builtins.
2022-10-23 11:10:26 +02:00
91969d4d48 libc: strtoul's endptr must not be const 2022-10-22 12:12:52 +02:00
fcd6d9b9f5 Add FIXME 2022-10-21 18:37:18 +02:00
6d7a8a0d0b libc: Add very basic strtoul()
As well as returning NULL in getenv() instead of aborting.
2022-10-21 18:32:46 +02:00
f50017912d libc: Implement atoi(), atol() and atoll() 2022-10-15 14:02:24 +02:00
2395c7a871 libc: Implement _Exit
Exactly the same as _exit, but in stdlib.h instead of unistd.h
2022-10-15 14:02:10 +02:00
8398b2e2e4 libc: Change bits/macros.h to use a __lc_ prefix for internal macros
That way, we don't pollute user programs with our own 'noreturn' and 'deprecated' macros
2022-10-15 09:52:37 +02:00
743aedcd49 libc: Implement atexit() and _exit()
exit() now calls registered handlers before calling _exit().

And initialize_libc() can now register a handler to close stdout and stderr on program termination!! :)
2022-10-12 20:41:55 +02:00
ffc223c2cf libc: Document functions in stdlib.h
Also, add prototypes for calloc() and realloc(), which were already implemented but not in the header.
2022-10-12 11:30:21 +02:00
f83a6ace51 Kernel, libc: Add support for providing a status code to exit()
The exit() libc function already accepted an integer, but didn't pass it on to the kernel since we had no mechanism for it to do that.
Now, the kernel stores a task's exit status to display it later (and in the future, return it to userspace via wait()/waitpid())
2022-10-08 17:56:40 +02:00
dae2ff8d50 Add mmap and munmap syscalls, and thus, add malloc and free to libc!! (yet again, thanks to the wonderful liballoc) 2022-10-02 20:45:04 +02:00
ae95a528f2 Make function stubs in libc loudly abort instead of silently failing 2022-10-02 18:10:53 +02:00
3c6c94adda Add a proper syscall() function to unistd.h 2022-10-02 17:02:15 +02:00
fcf5923cc0 WIP: Add a C Library, let's try to compile a Hosted GCC cross-compiler using this! 2022-10-01 20:59:22 +02:00