summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hug <philipp@hug.cx>2019-02-11 20:50:31 +0100
committerron minnich <rminnich@gmail.com>2019-02-11 23:17:37 +0000
commitb2566f207ed858604747bf306dfdd993bda517aa (patch)
tree43a4a2794329c4abff47902c5c12315f7ff32d92
parent2d8aff3d9348bc500dd7382f173b7d9b028ff44d (diff)
libpayload: add memchr to libc
libfdt requires memchr. Add missing function to libc. Change-Id: I872026559d16a352f350147c9d7c4be97456a99f Signed-off-by: Philipp Hug <philipp@hug.cx> Reviewed-on: https://review.coreboot.org/c/31354 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--payloads/libpayload/include/string.h1
-rw-r--r--payloads/libpayload/libc/memory.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/payloads/libpayload/include/string.h b/payloads/libpayload/include/string.h
index ca5d5131e2..4aff0e8994 100644
--- a/payloads/libpayload/include/string.h
+++ b/payloads/libpayload/include/string.h
@@ -39,6 +39,7 @@
void *memset(void *s, int c, size_t n);
void *memcpy(void *dst, const void *src, size_t n);
void *memmove(void *dst, const void *src, size_t n);
+void *memchr(const void *s, int c, size_t n);
int memcmp(const void *s1, const void *s2, size_t len);
/** @} */
diff --git a/payloads/libpayload/libc/memory.c b/payloads/libpayload/libc/memory.c
index 25c2b3af4f..8ee3eed9da 100644
--- a/payloads/libpayload/libc/memory.c
+++ b/payloads/libpayload/libc/memory.c
@@ -145,3 +145,15 @@ static int default_memcmp(const void *s1, const void *s2, size_t n)
int memcmp(const void *s1, const void *s2, size_t n)
__attribute__((weak, alias("default_memcmp")));
+
+
+void *memchr(const void *s, int c, size_t n)
+{
+ unsigned char *p = (unsigned char *)s;
+ while (n--)
+ if (*p != (unsigned char)c)
+ p++;
+ else
+ return p;
+ return 0;
+}