david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[libgcc] Provide symbol to handle gcc's implicit calls to memset()

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>
This commit is contained in:
Michael Brown 2016-04-20 16:43:34 +01:00
parent 91aa188fbb
commit 55e409b14f
2 changed files with 26 additions and 18 deletions

26
src/libgcc/implicit.c Normal file
View File

@ -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 );
}

View File

@ -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 );
}