[PATCH] bootwrapper: Use local definition of string.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The semihosting and FDT code makes use of libc style string
functions implemented in our string.c, however it relies of the system
providing the string.h header file.

This causes problems on toolchains that don't provide these headers,
like Android toolchains, and it also means that we include declaration
for functions which aren't implemented in the bootwrapper.

Resolve this by providing our own string.h which declares only
the functions we implement and add the base directory to the
include path so this header is found.

Signed-off-by: Jon Medhurst <tixy@xxxxxxxxxx>
---
 Makefile |    2 +-
 string.h |   16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 string.h

diff --git a/Makefile b/Makefile
index 995fd8f..f8fc841 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,7 @@ monitor.o: $(MONITOR)
 	$(CC) $(CPPFLAGS) -c -o $@ $<
 
 %.o: %.c
-	$(CC) $(CPPFLAGS) -O2 -ffreestanding -Ilibfdt -c -o $@ $<
+	$(CC) $(CPPFLAGS) -O2 -ffreestanding -I. -Ilibfdt -c -o $@ $<
 
 model.lds: $(LD_SCRIPT) Makefile
 	$(CC) $(CPPFLAGS) -E -P -C -o $@ $<
diff --git a/string.h b/string.h
new file mode 100644
index 0000000..f1aebdf
--- /dev/null
+++ b/string.h
@@ -0,0 +1,16 @@
+#ifndef STRING_H
+#define STRING_H
+
+#include <stddef.h>
+
+extern void *(memcpy)(void *__dest, __const void *__src, size_t __n);
+extern void *(memmove)(void *__dest, __const void *__src, size_t __n);
+extern void *(memchr)(void const *s, int c, size_t n);
+extern size_t (strlen)(const char *s);
+extern void *(memset)(void *s, int c, size_t count);
+extern int (memcmp)(void const *p1, void const *p2, size_t n);
+extern int (strcmp)(char const *s1, char const *s2);
+extern int (strncmp)(char const *s1, char const *s2, size_t n);
+extern char *(strchr)(char const *s, int c);
+
+#endif
-- 
1.7.10.4



_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux