diff --git a/src/libraries/libc/arch/amd64/crt/libdl.cpp b/src/libraries/libc/arch/amd64/crt/libdl.cpp new file mode 100644 index 0000000..118d9a6 --- /dev/null +++ b/src/libraries/libc/arch/amd64/crt/libdl.cpp @@ -0,0 +1,7 @@ + +extern "C" { + // Stub out these libdl functions for libunwind until + // we have a real libdl + int dladdr(const void *, void *) { return 0; } + int dl_iterate_phdr(void *, void *) { return 0; } +} diff --git a/src/libraries/libc/stdio.h b/src/libraries/libc/stdio.h index 40dc74e..f93269e 100644 --- a/src/libraries/libc/stdio.h +++ b/src/libraries/libc/stdio.h @@ -36,6 +36,10 @@ typedef size_t fpos_t; #define SEEK_END 1 #define SEEK_SET 2 +extern FILE *stdin; +extern FILE *stdout; +extern FILE *stderr; + #ifdef __cplusplus extern "C" { #endif @@ -112,6 +116,10 @@ int feof(FILE *stream); int ferror(FILE *stream); void perror(const char *s); +// Environment functions +// +char * getenv(const char *name); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/libraries/libc/stdio/fflush.cpp b/src/libraries/libc/stdio/fflush.cpp new file mode 100644 index 0000000..38f3694 --- /dev/null +++ b/src/libraries/libc/stdio/fflush.cpp @@ -0,0 +1,3 @@ +#include + +int fflush(FILE *stream) { return 0; } diff --git a/src/libraries/libc/stdio/fprintf.cpp b/src/libraries/libc/stdio/fprintf.cpp new file mode 100644 index 0000000..ebdef0a --- /dev/null +++ b/src/libraries/libc/stdio/fprintf.cpp @@ -0,0 +1,4 @@ +#include + +int fprintf(FILE * restrict stream, const char * restrict format, ...) { return 0; } +int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg) { return 0; } diff --git a/src/libraries/libc/stdio/fputc.cpp b/src/libraries/libc/stdio/fputc.cpp new file mode 100644 index 0000000..1de8cf6 --- /dev/null +++ b/src/libraries/libc/stdio/fputc.cpp @@ -0,0 +1,3 @@ +#include + +int fputc(char c, FILE *stream) { return 0; } diff --git a/src/libraries/libc/stdio/fputs.cpp b/src/libraries/libc/stdio/fputs.cpp new file mode 100644 index 0000000..a9e981e --- /dev/null +++ b/src/libraries/libc/stdio/fputs.cpp @@ -0,0 +1,3 @@ +#include + +int fputs(const char * restrict s, FILE * restrict stream) { return 0; } diff --git a/src/libraries/libc/stdio/fwrite.cpp b/src/libraries/libc/stdio/fwrite.cpp new file mode 100644 index 0000000..7d85985 --- /dev/null +++ b/src/libraries/libc/stdio/fwrite.cpp @@ -0,0 +1,3 @@ +#include + +size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream) { return 0; } diff --git a/src/libraries/libc/stdio/getenv.cpp b/src/libraries/libc/stdio/getenv.cpp new file mode 100644 index 0000000..081101f --- /dev/null +++ b/src/libraries/libc/stdio/getenv.cpp @@ -0,0 +1,3 @@ +#include + +char * getenv(const char *name) { return nullptr; } diff --git a/src/libraries/libc/stdio/stdio.cpp b/src/libraries/libc/stdio/stdio.cpp new file mode 100644 index 0000000..e0fed71 --- /dev/null +++ b/src/libraries/libc/stdio/stdio.cpp @@ -0,0 +1,5 @@ +#include + +FILE *stdin = nullptr; +FILE *stdout = nullptr; +FILE *stderr = nullptr;