diff --git a/src/libgcc/implicit.c b/src/libgcc/implicit.c new file mode 100644 index 00000000..645ae6d2 --- /dev/null +++ b/src/libgcc/implicit.c @@ -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 + +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 index e98b7838..00000000 --- a/src/libgcc/memcpy.c +++ /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 - -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 ); -}