Add implementations of memcmp and memcpy to ulib

This is necessary because gcc may generate calls to memcmp, memset,
memcpy, and memmove when compiling with -nostdlib.
This commit is contained in:
Anish Athalye 2019-10-08 21:18:54 -04:00
parent a52d296814
commit 8509784d80
2 changed files with 22 additions and 0 deletions

View file

@ -107,3 +107,23 @@ memmove(void *vdst, const void *vsrc, int n)
*dst++ = *src++; *dst++ = *src++;
return vdst; return vdst;
} }
int
memcmp(const void *s1, const void *s2, uint n)
{
const char *p1 = s1, *p2 = s2;
while (n-- > 0) {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
return 0;
}
void *
memcpy(void *dst, const void *src, uint n)
{
return memmove(dst, src, n);
}

View file

@ -38,3 +38,5 @@ void* memset(void*, int, uint);
void* malloc(uint); void* malloc(uint);
void free(void*); void free(void*);
int atoi(const char*); int atoi(const char*);
int memcmp(const void *, const void *, uint);
void *memcpy(void *, const void *, uint);