mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 02:18:37 +00:00
Provide a replacement for mempcpy.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6469
This commit is contained in:
parent
6f9073af5f
commit
20b41c0c23
@ -558,6 +558,42 @@ GLIBC232_RAWMEMCHR(m_libc_soname, rawmemchr)
|
||||
GLIBC25___STRCPY_CHK(m_libc_soname, __strcpy_chk)
|
||||
|
||||
|
||||
/* mempcpy */
|
||||
#define GLIBC25_MEMPCPY(soname, fnname) \
|
||||
void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
( void *dst, const void *src, SizeT len ); \
|
||||
void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
( void *dst, const void *src, SizeT len ) \
|
||||
{ \
|
||||
register char *d; \
|
||||
register char *s; \
|
||||
SizeT len_saved = len; \
|
||||
\
|
||||
if (len == 0) \
|
||||
return dst; \
|
||||
\
|
||||
if (is_overlap(dst, src, len, len)) \
|
||||
RECORD_OVERLAP_ERROR("mempcpy", dst, src, len); \
|
||||
\
|
||||
if ( dst > src ) { \
|
||||
d = (char *)dst + len - 1; \
|
||||
s = (char *)src + len - 1; \
|
||||
while ( len-- ) { \
|
||||
*d-- = *s--; \
|
||||
} \
|
||||
} else if ( dst < src ) { \
|
||||
d = (char *)dst; \
|
||||
s = (char *)src; \
|
||||
while ( len-- ) { \
|
||||
*d++ = *s++; \
|
||||
} \
|
||||
} \
|
||||
return (void*)( ((char*)dst) + len_saved ); \
|
||||
}
|
||||
|
||||
GLIBC25_MEMPCPY(m_libc_soname, mempcpy)
|
||||
|
||||
|
||||
/*------------------------------------------------------------*/
|
||||
/*--- AIX stuff only after this point ---*/
|
||||
/*------------------------------------------------------------*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user