From a4f646d694d68f75da8a401678de8288ba116b00 Mon Sep 17 00:00:00 2001 From: Alexander van der Grinten Date: Sun, 10 Dec 2017 20:19:18 +0100 Subject: [PATCH] libc: Implement functions used by libdrm --- libc/generic/ansi/include/inttypes.h | 2 ++ libc/generic/ansi/include/stdio.h | 3 +++ libc/generic/ansi/src/stdio-stubs.cpp | 6 ++++++ libc/generic/posix/include/mlibc/posix_string.h | 1 + libc/generic/posix/src/posix_string.cpp | 5 +++++ 5 files changed, 17 insertions(+) diff --git a/libc/generic/ansi/include/inttypes.h b/libc/generic/ansi/include/inttypes.h index 00d9f46f..3eb7fd58 100644 --- a/libc/generic/ansi/include/inttypes.h +++ b/libc/generic/ansi/include/inttypes.h @@ -89,6 +89,8 @@ #define PRIxPTR "lx" #define PRIXPTR "lX" +#define SCNu64 "lu" + #ifdef __cplusplus extern "C" { #endif diff --git a/libc/generic/ansi/include/stdio.h b/libc/generic/ansi/include/stdio.h index 476ca35b..87be8c03 100644 --- a/libc/generic/ansi/include/stdio.h +++ b/libc/generic/ansi/include/stdio.h @@ -115,6 +115,9 @@ int getchar_unlocked(void); int putc_unlocked(int, FILE *); int putchar_unlocked(int); +// GLIBC extensions. +int asprintf(char **, const char *, ...); + // Linux unlocked I/O extensions. void clearerr_unlocked(FILE *); diff --git a/libc/generic/ansi/src/stdio-stubs.cpp b/libc/generic/ansi/src/stdio-stubs.cpp index d2a6b685..c6197452 100644 --- a/libc/generic/ansi/src/stdio-stubs.cpp +++ b/libc/generic/ansi/src/stdio-stubs.cpp @@ -278,6 +278,12 @@ int putchar_unlocked(int) { __builtin_unreachable(); } +// GLIBC extensions. +int asprintf(char **, const char *, ...) { + __ensure(!"Not implemented"); + __builtin_unreachable(); +} + // Linux unlocked I/O extensions. void clearerr_unlocked(FILE *) { diff --git a/libc/generic/posix/include/mlibc/posix_string.h b/libc/generic/posix/include/mlibc/posix_string.h index 89470079..482cfcbf 100644 --- a/libc/generic/posix/include/mlibc/posix_string.h +++ b/libc/generic/posix/include/mlibc/posix_string.h @@ -7,6 +7,7 @@ extern "C" { #endif char *strdup(const char *string); +char *strndup(const char *, size_t); #ifdef __cplusplus } diff --git a/libc/generic/posix/src/posix_string.cpp b/libc/generic/posix/src/posix_string.cpp index c2770fb0..a4ceef2f 100644 --- a/libc/generic/posix/src/posix_string.cpp +++ b/libc/generic/posix/src/posix_string.cpp @@ -13,3 +13,8 @@ char *strdup(const char *string) { return new_string; } +char *strndup(const char *string, size_t) { + __ensure(!"Not implemented"); + __builtin_unreachable(); +} +