]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[libgcc] Provide symbol to handle gcc's implicit calls to memset()
authorMichael Brown <mcb30@ipxe.org>
Wed, 20 Apr 2016 15:43:34 +0000 (16:43 +0100)
committerMichael Brown <mcb30@ipxe.org>
Wed, 20 Apr 2016 15:46:24 +0000 (16:46 +0100)
On some architectures (such as ARM), gcc will insert implicit calls to
memset().  Handle these using the same mechanism as for the implicit
calls to memcpy() used by x86.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/libgcc/implicit.c [new file with mode: 0644]
src/libgcc/memcpy.c [deleted file]

diff --git a/src/libgcc/implicit.c b/src/libgcc/implicit.c
new file mode 100644 (file)
index 0000000..645ae6d
--- /dev/null
@@ -0,0 +1,26 @@
+/** @file
+ *
+ * gcc sometimes likes to insert implicit calls to memcpy() and
+ * memset().  Unfortunately, there doesn't seem to be any way to
+ * prevent it from doing this, or to force it to use the optimised
+ * versions as seen by C code; it insists on inserting symbol
+ * references to "memcpy" and "memset".  We therefore include wrapper
+ * functions just to keep gcc happy.
+ *
+ */
+
+#include <string.h>
+
+void * gcc_implicit_memcpy ( void *dest, const void *src,
+                            size_t len ) asm ( "memcpy" );
+
+void * gcc_implicit_memcpy ( void *dest, const void *src, size_t len ) {
+       return memcpy ( dest, src, len );
+}
+
+void * gcc_implicit_memset ( void *dest, int character,
+                            size_t len ) asm ( "memset" );
+
+void * gcc_implicit_memset ( void *dest, int character, size_t len ) {
+       return memset ( dest, character, len );
+}
diff --git a/src/libgcc/memcpy.c b/src/libgcc/memcpy.c
deleted file mode 100644 (file)
index e98b783..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/** @file
- *
- * gcc sometimes likes to insert implicit calls to memcpy().
- * Unfortunately, there doesn't seem to be any way to prevent it from
- * doing this, or to force it to use the optimised memcpy() as seen by
- * C code; it insists on inserting a symbol reference to "memcpy".  We
- * therefore include wrapper functions just to keep gcc happy.
- *
- */
-
-#include <string.h>
-
-void * gcc_implicit_memcpy ( void *dest, const void *src,
-                            size_t len ) asm ( "memcpy" );
-
-void * gcc_implicit_memcpy ( void *dest, const void *src, size_t len ) {
-       return memcpy ( dest, src, len );
-}