|
[Valgrind-developers] valgrind: r12833: Add an intercept for
memrchr. Needed for amd64 Ubuntu 12.04.
From: <sv...@va...> - 2012-08-04 23:08:17
|
sewardj 2012-08-05 00:08:08 +0100 (Sun, 05 Aug 2012)
New Revision: 12833
Log:
Add an intercept for memrchr. Needed for amd64 Ubuntu 12.04.
Modified files:
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/memcheck/mc_replace_strmem.c (+27 -0)
===================================================================
--- trunk/memcheck/mc_replace_strmem.c 2012-08-04 20:23:54 +01:00 (rev 12832)
+++ trunk/memcheck/mc_replace_strmem.c 2012-08-05 00:08:08 -23:00 (rev 12833)
@@ -95,6 +95,7 @@
20330 STRCSPN
20340 STRSPN
20350 STRCASESTR
+ 20360 MEMRCHR
*/
@@ -751,6 +752,32 @@
#endif
+/*---------------------- memrchr ----------------------*/
+
+#define MEMRCHR(soname, fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(20360,soname,fnname) \
+ (const void *s, int c, SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(20360,soname,fnname) \
+ (const void *s, int c, SizeT n) \
+ { \
+ SizeT i; \
+ UChar c0 = (UChar)c; \
+ UChar* p = (UChar*)s; \
+ for (i = 0; i < n; i++) \
+ if (p[n-1-i] == c0) return (void*)(&p[n-1-i]); \
+ return NULL; \
+ }
+
+#if defined(VGO_linux)
+ MEMRCHR(VG_Z_LIBC_SONAME, memrchr)
+
+#elif defined(VGO_darwin)
+ //MEMRCHR(VG_Z_LIBC_SONAME, memrchr)
+ //MEMRCHR(VG_Z_DYLD, memrchr)
+
+#endif
+
+
/*---------------------- memcpy ----------------------*/
#define MEMMOVE_OR_MEMCPY(becTag, soname, fnname, do_ol_check) \
|