Commit Graph

19 Commits

Author SHA1 Message Date
2cfefc25cc libc: Stub out rename() 2022-11-03 16:52:41 +01:00
32e09d3417 libc: Stub out more functionality so part of binutils builds 2022-10-29 09:39:12 +02:00
b615166373 libc: Stub out tmpfile() as well as add an empty math.h 2022-10-23 18:58:48 +02:00
bd8825231a libc: Stub out sscanf() 2022-10-23 11:16:36 +02:00
063e2d5e7a libc: Add more spacing to stdio.cpp 2022-10-22 12:21:04 +02:00
6dc51abfc8 libc: Add remove() stub 2022-10-22 12:20:05 +02:00
44834b8a0f libc: Implement fputs, fputc, putc and putchar 2022-10-12 10:05:14 +02:00
88a01fcfc7 libc: make perror output to stderr 2022-10-11 21:13:38 +02:00
b67011c626 libc: Use the new write() syscall
The new one is write(fd, buf, count).
The old one was write(buf, count).

So the old one tries to pass buf as a file descriptor, and write() complains that 4000000 is too large of a file descriptor and throws EBADF.

We now use the new syscall, through the wrapper that fwrite() provides us.
2022-10-11 21:12:19 +02:00
93f6be9319 libc: Implement the start of a FILE* API (the standard, portable C way of doing file stuff) 2022-10-10 21:08:57 +02:00
ac72d64490 Make (v)fprintf alias to (v)printf instead of throwing an error
We don't have files :) (yet)
But if someone wants to fprintf(stderr), then fine. Do it. Except it won't be any different from fprintf(stdout) or printf().
2022-10-08 13:45:57 +02:00
ee7558a9b7 Add a perror() function 2022-10-08 12:42:25 +02:00
71e15e94af Kernel, libc and userspace: Add basic errno support.
Kernel: Add an errno.h header with definitions for each header,
and return those, negated, from syscalls when there is an error.
mmap() returns an invalid address with errno encoded, instead of
returning a negated errno; this address is encoded as ffffffffffffffEE
where EE is errno in hex.

libc: make syscall() return -1 and set errno on error, instead of
returning the raw return value of the system call. Also, add mmap()
and munmap() wrappers in sys/mman.h :).

userspace: make the memeater program show the value of errno
when allocating memory fails.

Things to improve: add perror() and strerror() to make the errno
experience even better! >.<
2022-10-08 12:06:09 +02:00
028a1b1a3c libc: Enable even more warnings 2022-10-07 18:19:06 +02:00
cb60e418b2 Add vprintf, (v)sprintf and (v)snprintf to libc + move the non v-printfs to stdio.cpp, since they can now call their v-variants and thus don't depend on internal_printf 2022-10-03 19:59:33 +02:00
9420484c9b Do not use __builtin_alloca in puts (could overflow the stack for large strings) 2022-10-03 19:05:04 +02:00
34aa953dbc Add printf() and puts(), quite primitive, looks like hex printing isn't there yet... 2022-10-03 19:00:10 +02:00
ae95a528f2 Make function stubs in libc loudly abort instead of silently failing 2022-10-02 18:10:53 +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