Author: njn
Date: 2009-02-10 03:37:39 +0000 (Tue, 10 Feb 2009)
New Revision: 9129
Log:
Factored out duplicated Z-encoded names from numerous places into
pub_tool_redir.h.
Got DRD and Ptrcheck compiling, but they both die very quickly at run-time.
Modified:
branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c
branches/DARWIN/coregrind/m_syswrap/syswrap-main.c
branches/DARWIN/coregrind/pub_core_vkiscnums.h
branches/DARWIN/drd/Makefile.am
branches/DARWIN/drd/drd_main.c
branches/DARWIN/drd/drd_pthread_intercepts.c
branches/DARWIN/drd/drd_semaphore.c
branches/DARWIN/drd/drd_semaphore.h
branches/DARWIN/drd/drd_strmem_intercepts.c
branches/DARWIN/drd/tests/recursive_mutex.c
branches/DARWIN/exp-ptrcheck/Makefile.am
branches/DARWIN/exp-ptrcheck/h_intercepts.c
branches/DARWIN/exp-ptrcheck/h_main.c
branches/DARWIN/helgrind/hg_intercepts.c
branches/DARWIN/include/pub_tool_redir.h
branches/DARWIN/include/pub_tool_vkiscnums.h
branches/DARWIN/include/vki/vki-scnums-darwin.h
branches/DARWIN/memcheck/mc_replace_strmem.c
Modified: branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -53,39 +53,7 @@
#include "pub_core_redir.h" // for VG_REPLACE_FUNCTION_*
#include "pub_core_replacemalloc.h"
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // Darwin libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Soname of the GNU C++ library. --- */
-
-#define m_libstdcxx_soname libstdcZpZpZa // libstdc++*
-
-/* --- Soname of XLC's C++ library. --- */
-
-/* AIX: xlC's C++ runtime library is called libC.a, and the
- interesting symbols appear to be in ansicore_32.o or ansicore_64.o
- respectively. */
-#if defined(VGP_ppc32_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
-#endif
-
-
/* 2 Apr 05: the Portland Group compiler, which uses cfront/ARM style
mangling, could be supported properly by the redirects in this
module. Except we can't because it doesn't put its allocation
@@ -220,38 +188,38 @@
// (from_so, from_fn, v's replacement)
// malloc
-ALLOC_or_NULL(m_libstdcxx_soname, malloc, malloc);
-ALLOC_or_NULL(m_libc_soname, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc, malloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-ALLOC_or_NULL(m_libc_soname, malloc_common, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_common, malloc);
#endif
-ZONEALLOC_or_NULL(m_libc_soname, malloc_zone_malloc, malloc);
+ZONEALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_zone_malloc, malloc);
/*---------------------- new ----------------------*/
// operator new(unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_new, __builtin_new);
// operator new(unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwj, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwj, __builtin_new);
#endif
// operator new(unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGO_darwin)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwm, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwm, __builtin_new);
#endif
// operator new(unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __nw__FUl, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __nw__FUl, __builtin_new);
#endif
@@ -259,43 +227,43 @@
// operator new(unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_NULL(m_libC_dot_a, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_DOT_A, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
#endif
/*---------------------- new [] ----------------------*/
// operator new[](unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_vec_new, __builtin_vec_new );
-ALLOC_or_BOMB(m_libc_soname, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_vec_new, __builtin_vec_new );
// operator new[](unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znaj, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znaj, __builtin_vec_new );
#endif
// operator new[](unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znam, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znam, __builtin_vec_new );
#endif
// operator new[](unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUl, __builtin_vec_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUl, __builtin_vec_new);
#endif
@@ -303,19 +271,19 @@
// operator new[](unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new[](unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new [](unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
#endif
@@ -349,63 +317,63 @@
}
// free
-FREE(m_libstdcxx_soname, free, free );
-FREE(m_libc_soname, free, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, free, free );
+FREE(VG_Z_LIBC_SONAME, free, free );
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libc_soname, free_common, free );
+FREE(VG_Z_LIBC_SONAME, free_common, free );
#endif
-ZONEFREE(m_libc_soname, malloc_zone_free, free );
+ZONEFREE(VG_Z_LIBC_SONAME, malloc_zone_free, free );
/*---------------------- cfree ----------------------*/
// cfree
-FREE(m_libstdcxx_soname, cfree, free );
-FREE(m_libc_soname, cfree, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, cfree, free );
+FREE(VG_Z_LIBC_SONAME, cfree, free );
/*---------------------- delete ----------------------*/
// operator delete(void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_delete, __builtin_delete );
-FREE(m_libc_soname, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_delete, __builtin_delete );
// operator delete(void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPv, __builtin_delete );
-FREE(m_libc_soname, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPv, __builtin_delete );
// operator delete(void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __dl__FPv, __builtin_delete );
+FREE(VG_Z_LIBC_DOT_A, __dl__FPv, __builtin_delete );
#endif
/*---------------------- delete nothrow ----------------------*/
// operator delete(void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
-FREE(m_libc_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
/*---------------------- delete [] ----------------------*/
// operator delete[](void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_vec_delete, __builtin_vec_delete );
-FREE(m_libc_soname, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_vec_delete, __builtin_vec_delete );
// operator delete[](void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPv, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPv, __builtin_vec_delete );
// operator delete[](void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __vd__FPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_DOT_A, __vd__FPv, __builtin_vec_delete );
#endif
/*---------------------- delete [] nothrow ----------------------*/
// operator delete[](void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
/*---------------------- calloc ----------------------*/
@@ -440,11 +408,11 @@
return v; \
}
-CALLOC(m_libc_soname, calloc);
+CALLOC(VG_Z_LIBC_SONAME, calloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-CALLOC(m_libc_soname, calloc_common);
+CALLOC(VG_Z_LIBC_SONAME, calloc_common);
#endif
-ZONECALLOC(m_libc_soname, malloc_zone_calloc);
+ZONECALLOC(VG_Z_LIBC_SONAME, malloc_zone_calloc);
/*---------------------- realloc ----------------------*/
@@ -462,9 +430,9 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. GrP fixme use zonemalloc instead? */ \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(m_libc_soname,free)(ptrV); \
+ VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0"); \
return NULL; \
} \
@@ -486,9 +454,9 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. */ \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(m_libc_soname,free)(ptrV); \
+ VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0"); \
return NULL; \
} \
@@ -497,11 +465,11 @@
return v; \
}
-REALLOC(m_libc_soname, realloc);
+REALLOC(VG_Z_LIBC_SONAME, realloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-REALLOC(m_libc_soname, realloc_common);
+REALLOC(VG_Z_LIBC_SONAME, realloc_common);
#endif
-ZONEREALLOC(m_libc_soname, malloc_zone_realloc);
+ZONEREALLOC(VG_Z_LIBC_SONAME, malloc_zone_realloc);
/*---------------------- memalign ----------------------*/
@@ -552,8 +520,8 @@
return v; \
}
-MEMALIGN(m_libc_soname, memalign);
-ZONEMEMALIGN(m_libc_soname, malloc_zone_memalign);
+MEMALIGN(VG_Z_LIBC_SONAME, memalign);
+ZONEMEMALIGN(VG_Z_LIBC_SONAME, malloc_zone_memalign);
/*---------------------- valloc ----------------------*/
@@ -575,7 +543,7 @@
static int pszB = 0; \
if (pszB == 0) \
pszB = local__getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign) \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
@@ -588,12 +556,12 @@
extern int getpagesize (void); \
if (pszB == 0) \
pszB = getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign) \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
-VALLOC(m_libc_soname, valloc);
-ZONEVALLOC(m_libc_soname, malloc_zone_valloc);
+VALLOC(VG_Z_LIBC_SONAME, valloc);
+ZONEVALLOC(VG_Z_LIBC_SONAME, malloc_zone_valloc);
/*---------------------- mallopt ----------------------*/
@@ -610,7 +578,7 @@
return 1; \
}
-MALLOPT(m_libc_soname, mallopt);
+MALLOPT(VG_Z_LIBC_SONAME, mallopt);
/*---------------------- malloc_trim ----------------------*/
@@ -646,7 +614,7 @@
return 0; \
}
-MALLOC_TRIM(m_libc_soname, malloc_trim);
+MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
/*---------------------- posix_memalign ----------------------*/
@@ -666,7 +634,7 @@
|| (alignment & (alignment - 1)) != 0) \
return VKI_EINVAL; \
\
- mem = VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign)(alignment, size); \
+ mem = VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign)(alignment, size); \
\
if (mem != NULL) { \
*memptr = mem; \
@@ -676,12 +644,12 @@
return VKI_ENOMEM; \
}
-POSIX_MEMALIGN(m_libc_soname, posix_memalign);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
/* 27 Nov 07: it appears that xlc links into executables, a
posix_memalign, which calls onwards to memalign_common, with the
same args. */
-POSIX_MEMALIGN(m_libc_soname, memalign_common);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, memalign_common);
#endif
@@ -705,8 +673,8 @@
return pszB; \
}
-MALLOC_USABLE_SIZE(m_libc_soname, malloc_usable_size);
-MALLOC_USABLE_SIZE(m_libc_soname, malloc_size);
+MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
+MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_size);
/*---------------------- (unimplemented) ----------------------*/
@@ -728,9 +696,9 @@
panic(#fnname); \
}
-PANIC(m_libc_soname, pvalloc);
-PANIC(m_libc_soname, malloc_get_state);
-PANIC(m_libc_soname, malloc_set_state);
+PANIC(VG_Z_LIBC_SONAME, pvalloc);
+PANIC(VG_Z_LIBC_SONAME, malloc_get_state);
+PANIC(VG_Z_LIBC_SONAME, malloc_set_state);
#define MALLOC_STATS(soname, fnname) \
\
@@ -740,7 +708,7 @@
/* Valgrind's malloc_stats implementation does nothing. */ \
}
-MALLOC_STATS(m_libc_soname, malloc_stats);
+MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
/*---------------------- mallinfo ----------------------*/
@@ -760,7 +728,7 @@
return mi; \
}
-MALLINFO(m_libc_soname, mallinfo);
+MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
#if defined(VGO_darwin)
@@ -769,11 +737,11 @@
NULL, // reserved
NULL, // reserved
NULL, // fixme malloc_size
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_malloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_calloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_valloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_free),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_realloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_malloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_calloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_valloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_free),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_realloc),
NULL, // fixme destroy
"ValgrindMallocZone",
NULL, // batch_malloc
@@ -781,7 +749,7 @@
NULL, // fixme introspect
2, // version (fixme 3?)
// DDD: on my machine this last field doesn't exist in malloc_zone_t.
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_memalign)
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_memalign)
};
#define DEFAULT_ZONE(soname, fnname) \
@@ -792,8 +760,8 @@
return &vg_default_zone; \
}
-DEFAULT_ZONE(m_libc_soname, malloc_zone_from_ptr);
-DEFAULT_ZONE(m_libc_soname, malloc_default_zone);
+DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_zone_from_ptr);
+DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_default_zone);
// GrP fixme bypass libc's use of zone->introspect->check
#define ZONE_CHECK(soname, fnname) \
@@ -804,7 +772,7 @@
return 1; \
}
-ZONE_CHECK(m_libc_soname, malloc_zone_check);
+ZONE_CHECK(VG_Z_LIBC_SONAME, malloc_zone_check);
#endif
Modified: branches/DARWIN/coregrind/m_syswrap/syswrap-main.c
===================================================================
--- branches/DARWIN/coregrind/m_syswrap/syswrap-main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/m_syswrap/syswrap-main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -941,6 +941,7 @@
VG_TRACK( post_reg_write, Vg_CoreSysCall, tid,
OFFSET_x86_EAX, sizeof(UWord) );
// fixme sets defined for entire eflags, not just bit c
+ // DDD: this breaks exp-ptrcheck.
VG_TRACK( post_reg_write, Vg_CoreSysCall, tid,
offsetof(VexGuestX86State, guest_CC_DEP1), sizeof(UInt) );
break;
Modified: branches/DARWIN/coregrind/pub_core_vkiscnums.h
===================================================================
--- branches/DARWIN/coregrind/pub_core_vkiscnums.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/pub_core_vkiscnums.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -56,10 +56,6 @@
#elif defined(VGO_darwin)
-/* Macros for working out which syscall a syscall number refers to. */
-#define VG_DARWIN_SYSNO_INDEX(sysno) ((sysno) & VG_DARWIN_SYSCALL_NUMBER_MASK)
-#define VG_DARWIN_SYSNO_CLASS(sysno) ((sysno) >> VG_DARWIN_SYSCALL_CLASS_SHIFT)
-
/* Convert a syscall number into a nicer form(?) */
#if defined(VGA_x86)
# define VG_DARWIN_SYSNO_NUM(sysno) VG_DARWIN_SYSNO_PRINT(sysno)
Modified: branches/DARWIN/drd/Makefile.am
===================================================================
--- branches/DARWIN/drd/Makefile.am 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/Makefile.am 2009-02-10 03:37:39 UTC (rev 9129)
@@ -19,6 +19,12 @@
if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5
noinst_PROGRAMS += drd-ppc64-aix5 vgpreload_drd-ppc64-aix5.so
endif
+if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
+ noinst_PROGRAMS += drd-x86-darwin vgpreload_drd-x86-darwin.so
+endif
+if VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN
+ noinst_PROGRAMS += drd-amd64-darwin vgpreload_drd-amd64-darwin.so
+endif
VGPRELOAD_DRD_SOURCES = \
@@ -91,7 +97,22 @@
vgpreload_drd_ppc64_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_AIX5)\
$(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
+vgpreload_drd_x86_darwin_so_SOURCES = $(VGPRELOAD_DRD_SOURCES)
+vgpreload_drd_x86_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_CFLAGS = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PIC)
+vgpreload_drd_x86_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_LDFLAGS = $(PRELOAD_LDFLAGS_X86_DARWIN)\
+ $(LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN)
+vgpreload_drd_amd64_darwin_so_SOURCES = $(VGPRELOAD_DRD_SOURCES)
+vgpreload_drd_amd64_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+vgpreload_drd_amd64_darwin_so_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PIC)
+vgpreload_drd_amd64_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_AMD64_DARWIN)
+vgpreload_drd_amd64_darwin_so_DEPENDENCIES =
+vgpreload_drd_amd64_darwin_so_LDFLAGS = $(PRELOAD_LDFLAGS_AMD64_DARWIN)\
+ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN)
+
DRD_SOURCES = \
drd_barrier.c \
drd_clientobj.c \
@@ -173,3 +194,19 @@
drd_ppc64_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_AIX5)
drd_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5)
drd_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5)
+
+drd_x86_darwin_SOURCES = $(DRD_SOURCES)
+drd_x86_darwin_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+drd_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN)
+drd_x86_darwin_DEPENDENCIES = $(COREGRIND_LIBS_X86_DARWIN)
+drd_x86_darwin_LDADD = $(TOOL_LDADD_X86_DARWIN)
+drd_x86_darwin_LDFLAGS = $(TOOL_LDFLAGS_X86_DARWIN)
+
+drd_amd64_darwin_SOURCES = $(DRD_SOURCES)
+drd_amd64_darwin_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+drd_amd64_darwin_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN)
+drd_amd64_darwin_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_DARWIN)
+drd_amd64_darwin_LDADD = $(TOOL_LDADD_AMD64_DARWIN)
+drd_amd64_darwin_LDFLAGS = $(TOOL_LDFLAGS_AMD64_DARWIN)
+
+
Modified: branches/DARWIN/drd/drd_main.c
===================================================================
--- branches/DARWIN/drd/drd_main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -780,7 +780,7 @@
void drd_semaphore_destroy(const Addr semaphore)
{
- semaphore_destroy(semaphore);
+ my_semaphore_destroy(semaphore);
}
void drd_semaphore_pre_wait(const DrdThreadId tid, const Addr semaphore)
Modified: branches/DARWIN/drd/drd_pthread_intercepts.c
===================================================================
--- branches/DARWIN/drd/drd_pthread_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_pthread_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -571,6 +571,7 @@
}
+#if defined(HAVE_PTHREAD_SPIN_LOCK)
// pthread_spin_init
PTH_FUNC(int, pthreadZuspinZuinit, // pthread_spin_init
pthread_spinlock_t *spinlock,
@@ -651,7 +652,10 @@
spinlock, 0, 0, 0, 0);
return ret;
}
+#endif // HAVE_PTHREAD_SPIN_LOCK
+
+#if defined(HAVE_PTHREAD_BARRIER_INIT)
// pthread_barrier_init
PTH_FUNC(int, pthreadZubarrierZuinit, // pthread_barrier_init
pthread_barrier_t* barrier,
@@ -703,6 +707,7 @@
0, 0);
return ret;
}
+#endif // HAVE_PTHREAD_BARRIER_INIT
// sem_init
Modified: branches/DARWIN/drd/drd_semaphore.c
===================================================================
--- branches/DARWIN/drd/drd_semaphore.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_semaphore.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -189,8 +189,12 @@
return p;
}
-/** Called after sem_destroy(). */
-void semaphore_destroy(const Addr semaphore)
+/** Called after sem_destroy().
+ * The "my_" prefix avoids a clash with
+ * coregrind/m_mach/taskUser.c:semaphore_destroy on Darwin.
+ * XXX: this function should have a DRD_() wrapper! */
+
+void my_semaphore_destroy(const Addr semaphore)
{
struct semaphore_info* p;
Modified: branches/DARWIN/drd/drd_semaphore.h
===================================================================
--- branches/DARWIN/drd/drd_semaphore.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_semaphore.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -41,7 +41,7 @@
void semaphore_set_trace(const Bool trace_semaphore);
struct semaphore_info* semaphore_init(const Addr semaphore,
const Word pshared, const UInt value);
-void semaphore_destroy(const Addr semaphore);
+void my_semaphore_destroy(const Addr semaphore);
void semaphore_pre_wait(const Addr semaphore);
void semaphore_post_wait(const DrdThreadId tid, const Addr semaphore,
const Bool waited);
Modified: branches/DARWIN/drd/drd_strmem_intercepts.c
===================================================================
--- branches/DARWIN/drd/drd_strmem_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_strmem_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -38,29 +38,6 @@
#include "valgrind.h"
-/* --------- Some handy Z-encoded names. --------- */
-
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRNLEN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
@@ -70,7 +47,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -86,9 +63,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
/*--------------------------------------------------------------------*/
/*--- end ---*/
Modified: branches/DARWIN/drd/tests/recursive_mutex.c
===================================================================
--- branches/DARWIN/drd/tests/recursive_mutex.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/tests/recursive_mutex.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -10,6 +10,7 @@
#include "../../config.h"
+#if !defined(VGO_darwin)
static void lock_twice(pthread_mutex_t* const p)
{
pthread_mutex_lock(p);
@@ -17,6 +18,7 @@
pthread_mutex_unlock(p);
pthread_mutex_unlock(p);
}
+#endif
int main(int argc, char** argv)
{
@@ -60,6 +62,10 @@
pthread_mutex_destroy(&m);
}
#endif
+
+// DDD: Darwin doesn't support signals yet, so the alarm() call doesn't kick
+// in, which causes it to hang.
+#if !defined(VGO_darwin)
{
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
@@ -68,5 +74,6 @@
lock_twice(&m);
}
printf("Done.\n");
+#endif
return 0;
}
Modified: branches/DARWIN/exp-ptrcheck/Makefile.am
===================================================================
--- branches/DARWIN/exp-ptrcheck/Makefile.am 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/Makefile.am 2009-02-10 03:37:39 UTC (rev 9129)
@@ -19,6 +19,12 @@
if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5
noinst_PROGRAMS += exp-ptrcheck-ppc64-aix5 vgpreload_exp-ptrcheck-ppc64-aix5.so
endif
+if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
+noinst_PROGRAMS += exp-ptrcheck-x86-darwin vgpreload_exp-ptrcheck-x86-darwin.so
+endif
+if VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN
+noinst_PROGRAMS += exp-ptrcheck-amd64-darwin vgpreload_exp-ptrcheck-amd64-darwin.so
+endif
VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON = h_intercepts.c
@@ -77,8 +83,26 @@
$(PRELOAD_LDFLAGS_PPC64_AIX5) \
$(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
+vgpreload_exp_ptrcheck_x86_darwin_so_SOURCES = $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON)
+vgpreload_exp_ptrcheck_x86_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_CFLAGS = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PIC) -O2
+vgpreload_exp_ptrcheck_x86_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_X86_DARWIN) \
+ $(LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_SOURCES = $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON)
+vgpreload_exp_ptrcheck_amd64_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PIC) -O2
+vgpreload_exp_ptrcheck_amd64_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_AMD64_DARWIN) \
+ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN)
+
+
EXP_PTRCHECK_SOURCES_COMMON = \
pc_common.c h_main.c sg_main.c pc_main.c
@@ -124,6 +148,20 @@
exp_ptrcheck_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5)
exp_ptrcheck_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5)
+exp_ptrcheck_x86_darwin_SOURCES = $(EXP_PTRCHECK_SOURCES_COMMON)
+exp_ptrcheck_x86_darwin_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_DEPENDENCIES = $(COREGRIND_LIBS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_LDADD = $(TOOL_LDADD_X86_DARWIN)
+exp_ptrcheck_x86_darwin_LDFLAGS = $(TOOL_LDFLAGS_X86_DARWIN)
+
+exp_ptrcheck_amd64_darwin_SOURCES = $(EXP_PTRCHECK_SOURCES_COMMON)
+exp_ptrcheck_amd64_darwin_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_LDADD = $(TOOL_LDADD_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_LDFLAGS = $(TOOL_LDFLAGS_AMD64_DARWIN)
+
noinst_HEADERS = h_main.h sg_main.h pc_common.h
EXTRA_DIST =
Modified: branches/DARWIN/exp-ptrcheck/h_intercepts.c
===================================================================
--- branches/DARWIN/exp-ptrcheck/h_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/h_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -44,31 +44,6 @@
memcheck/mc_replace_strmem.c. If you copy more in, please keep
them in the same order as in mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
-
-
// Note that this replacement often doesn't get used because gcc inlines
// calls to strlen() with its own built-in version. This can be very
// confusing if you aren't expecting it. Other small functions in this file
@@ -82,10 +57,10 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
-STRLEN(m_ld_so_1, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
+STRLEN(VG_Z_LD_SO_1, strlen)
#define STRCMP(soname, fnname) \
@@ -108,9 +83,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -155,9 +130,9 @@
return dest; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -172,9 +147,9 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
/*--------------------------------------------------------------------*/
Modified: branches/DARWIN/exp-ptrcheck/h_main.c
===================================================================
--- branches/DARWIN/exp-ptrcheck/h_main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/h_main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -1962,6 +1962,8 @@
if (is_integer_guest_reg( (Int)offset, (Int)size )) {
put_guest_intreg( tid, 1, offset, size, (UWord)NONPTR );
} else {
+ // DDD: on Darwin, this assertion fails because we currently do a
+ // 'post_reg_write' on the 'guest_CC_DEP1' pseudo-register.
tl_assert(0);
}
// VG_(set_thread_shadow_archreg)( tid, reg, (UInt)NONPTR );
@@ -2132,16 +2134,16 @@
syscall-specific handling is is required. No further details of it
are stored in the table.
- On Linux, 'number' is a __NR_xxx constant.
+ On Linux and Darwin, 'number' is a __NR_xxx constant.
On AIX5, 'number' is an Int*, which points to the Int variable
holding the currently assigned number for this syscall.
When querying the table, we compare the supplied syscall number
- with the 'number' field (directly on Linux, after dereferencing on
- AIX5), to find the relevant entry. This requires a linear search
- of the table. To stop the costs getting too high, the table is
- incrementally rearranged after each search, to move commonly
+ with the 'number' field (directly on Linux and Darwin, after
+ dereferencing on AIX5), to find the relevant entry. This requires a
+ linear search of the table. To stop the costs getting too high, the
+ table is incrementally rearranged after each search, to move commonly
requested items a bit closer to the front.
The table is built once, the first time it is used. After that we
@@ -2416,6 +2418,30 @@
ADD(1, __NR_AIX5_kload); /* not sure what to do here */
ADD(0, __NR_AIX5_kwrite);
+ /* --------------- DARWIN ------------- */
+
+# elif defined(VGO_darwin)
+
+# define ADD(_flag, _syscallname) \
+ do { UWordPair p; p.uw1 = (_syscallname); p.uw2 = (_flag); \
+ VG_(addToXA)( post_syscall_table, &p ); \
+ } while (0)
+
+ // DDD: a desultory attempt thus far...
+
+ // Unix/BSD syscalls.
+
+ // Mach traps.
+ ADD(0, __NR_host_self_trap);
+ ADD(0, __NR_mach_msg_trap);
+ ADD(0, __NR_mach_reply_port);
+ ADD(0, __NR_task_self_trap);
+
+ // Machine-dependent syscalls.
+ ADD(0, __NR_pthread_set_self);
+
+ /* ------------------------------------ */
+
# else
# error "Unsupported OS"
# endif
@@ -2436,7 +2462,7 @@
n = VG_(sizeXA)( post_syscall_table );
for (i = 0; i < n; i++) {
pair = VG_(indexXA)( post_syscall_table, i );
-# if defined(VGO_linux)
+# if defined(VGO_linux) || defined(VGO_darwin)
if (pair->uw1 == (UWord)sysno)
break;
# elif defined(VGO_aix5)
@@ -2458,7 +2484,7 @@
VG_(printf)("syscallnm == %s\n",
VG_(aix5_sysno_to_sysname)(sysno));
# elif defined(VGO_darwin)
- VG_(printf)("sysno == %u\n", VG_DARWIN_SYSNO_PRINT(sysno));
+ VG_(printf)("sysno == %d\n", VG_DARWIN_SYSNO_PRINT(sysno));
# else
# error "Unsupported OS"
# endif
Modified: branches/DARWIN/helgrind/hg_intercepts.c
===================================================================
--- branches/DARWIN/helgrind/hg_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/helgrind/hg_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -1596,31 +1596,7 @@
new functions, please keep them in the same order as they appear in
mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
@@ -1635,12 +1611,12 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
// Note that this replacement often doesn't get used because gcc inlines
@@ -1656,9 +1632,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -1673,7 +1649,7 @@
return (char*)dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
#define STRCMP(soname, fnname) \
@@ -1696,9 +1672,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -1743,9 +1719,9 @@
return dst; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
Modified: branches/DARWIN/include/pub_tool_redir.h
===================================================================
--- branches/DARWIN/include/pub_tool_redir.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/pub_tool_redir.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -158,7 +158,52 @@
#define VG_WRAP_FUNCTION_ZU(soname,fnname) VG_CONCAT4(_vgwZU_,soname,_,fnname)
#define VG_WRAP_FUNCTION_ZZ(soname,fnname) VG_CONCAT4(_vgwZZ_,soname,_,fnname)
+/* --------- Some handy Z-encoded names. --------- */
+/* --- Soname of the standard C library. --- */
+
+#if defined(VGO_linux)
+# define VG_Z_LIBC_SONAME libcZdsoZa // libc.so*
+#elif defined(VGP_ppc32_aix5)
+ /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZdoZR // libc*.a(shr.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
+#elif defined(VGO_darwin)
+# define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib
+#else
+# error "Unknown platform"
+#endif
+
+/* --- Soname of the GNU C++ library. --- */
+
+// DDD: this one and those below should probably be conditionally compiled,
+// as should all the redirects in the tools that use them.
+#define VG_Z_LIBSTDCXX_SONAME libstdcZpZpZa // libstdc++*
+
+/* --- Soname of XLC's C++ library. --- */
+
+/* AIX: xlC's C++ runtime library is called libC.a, and the
+ interesting symbols appear to be in ansicore_32.o or ansicore_64.o
+ respectively. */
+#if defined(VGP_ppc32_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
+#endif
+
+/* --- Sonames for Linux ELF linkers. --- */
+
+#define VG_Z_LD_LINUX_SO_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
+#define VG_Z_LD_LINUX_X86_64_SO_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
+#define VG_Z_LD64_SO_1 ld64ZdsoZd1 // ld64.so.1
+#define VG_Z_LD_SO_1 ldZdsoZd1 // ld.so.1
+
+/* --- Executable name for Darwin Mach-O linker. --- */
+
+#define VG_Z_DYLD dyld // dyld
+
+
#endif // __PUB_TOOL_REDIR_H
/*--------------------------------------------------------------------*/
Modified: branches/DARWIN/include/pub_tool_vkiscnums.h
===================================================================
--- branches/DARWIN/include/pub_tool_vkiscnums.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/pub_tool_vkiscnums.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -80,13 +80,22 @@
#elif defined(VGP_x86_darwin) || defined(VGP_amd64_darwin)
# include "vki/vki-scnums-darwin.h"
-/* Convert a syscall number into a nice form for printing. */
+// Convert a syscall number into a nice form for printing. Unix syscalls
+// get positive numbers (0..400-odd), Mach traps get negative numbers
+// (-10..-127).
+// DDD: Machine-dependent ones get positive numbers which will overlap with
+// Unix ones! So eg. both 'pthread_set_self' and 'read' are reported as
+// "3".
#define VG_DARWIN_SYSNO_PRINT(sysno) \
((VG_DARWIN_SYSNO_CLASS(sysno) == VG_DARWIN_SYSCALL_CLASS_MACH) \
? -VG_DARWIN_SYSNO_INDEX(sysno) \
: VG_DARWIN_SYSNO_INDEX(sysno) \
)
+/* Macros for working out which syscall a syscall number refers to. */
+#define VG_DARWIN_SYSNO_INDEX(sysno) ((sysno) & VG_DARWIN_SYSCALL_NUMBER_MASK)
+#define VG_DARWIN_SYSNO_CLASS(sysno) ((sysno) >> VG_DARWIN_SYSCALL_CLASS_SHIFT)
+
#else
# error Unknown platform
#endif
Modified: branches/DARWIN/include/vki/vki-scnums-darwin.h
===================================================================
--- branches/DARWIN/include/vki/vki-scnums-darwin.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/vki/vki-scnums-darwin.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -38,6 +38,9 @@
// Don't pass __NR_something directly to any syscall instruction.
// Hack: x86 `int $0x80` (unix, 64-bit result) are special.
+// Encoding: the top 8-bits are the syscall class. The low 24 are the
+// syscall number (index) within that class.
+
#define VG_DARWIN_SYSCALL_CLASS_SHIFT 24
#define VG_DARWIN_SYSCALL_CLASS_MASK (0xFF << VG_DARWIN_SYSCALL_CLASS_SHIFT)
#define VG_DARWIN_SYSCALL_NUMBER_MASK (~VG_DARWIN_SYSCALL_CLASS_MASK)
Modified: branches/DARWIN/memcheck/mc_replace_strmem.c
===================================================================
--- branches/DARWIN/memcheck/mc_replace_strmem.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/memcheck/mc_replace_strmem.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -97,34 +97,7 @@
s, src, dst, len, 0); \
}
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-/* --- Executable name for Darwin Mach-O linker. --- */
-#define m_dyld dyld // dyld
-
-
#define STRRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
@@ -140,11 +113,11 @@
}
// Apparently rindex() is the same thing as strrchr()
-STRRCHR(m_libc_soname, strrchr)
-STRRCHR(m_dyld, strrchr)
-STRRCHR(m_libc_soname, rindex)
-STRRCHR(m_dyld, rindex)
-STRRCHR(m_ld_linux_so_2, rindex)
+STRRCHR(VG_Z_LIBC_SONAME, strrchr)
+STRRCHR(VG_Z_DYLD, strrchr)
+STRRCHR(VG_Z_LIBC_SONAME, rindex)
+STRRCHR(VG_Z_DYLD, rindex)
+STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
#define STRCHR(soname, fnname) \
@@ -161,14 +134,14 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_dyld, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
-STRCHR(m_dyld, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_DYLD, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
+STRCHR(VG_Z_DYLD, index)
#define STRCAT(soname, fnname) \
@@ -192,7 +165,7 @@
return dst_orig; \
}
-STRCAT(m_libc_soname, strcat)
+STRCAT(VG_Z_LIBC_SONAME, strcat)
#define STRNCAT(soname, fnname) \
@@ -220,8 +193,8 @@
return dst_orig; \
}
-STRNCAT(m_libc_soname, strncat)
-STRNCAT(m_dyld, strncat)
+STRNCAT(VG_Z_LIBC_SONAME, strncat)
+STRNCAT(VG_Z_DYLD, strncat)
/* Append src to dst. n is the size of dst's buffer. dst is guaranteed
@@ -260,8 +233,8 @@
return m; \
}
-STRLCAT(m_libc_soname, strlcat)
-STRLCAT(m_dyld, strlcat)
+STRLCAT(VG_Z_LIBC_SONAME, strlcat)
+STRLCAT(VG_Z_DYLD, strlcat)
#define STRNLEN(soname, fnname) \
@@ -273,7 +246,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -289,9 +262,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -315,8 +288,8 @@
return dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
-STRCPY(m_dyld, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
+STRCPY(VG_Z_DYLD, strcpy)
#define STRNCPY(soname, fnname) \
@@ -339,8 +312,8 @@
return dst_orig; \
}
-STRNCPY(m_libc_soname, strncpy)
-STRNCPY(m_dyld, strncpy)
+STRNCPY(VG_Z_LIBC_SONAME, strncpy)
+STRNCPY(VG_Z_DYLD, strncpy)
/* Copy up to n-1 bytes from src to dst. Then nul-terminate dst if n > 0.
@@ -368,8 +341,8 @@
return src - src_orig; \
}
-STRLCPY(m_libc_soname, strlcpy)
-STRLCPY(m_dyld, strlcpy)
+STRLCPY(VG_Z_LIBC_SONAME, strlcpy)
+STRLCPY(VG_Z_DYLD, strlcpy)
#define STRNCMP(soname, fnname) \
@@ -392,8 +365,8 @@
} \
}
-STRNCMP(m_libc_soname, strncmp)
-STRNCMP(m_dyld, strncmp)
+STRNCMP(VG_Z_LIBC_SONAME, strncmp)
+STRNCMP(VG_Z_DYLD, strncmp)
#define STRCMP(soname, fnname) \
@@ -416,9 +389,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCHR(soname, fnname) \
@@ -433,8 +406,8 @@
return NULL; \
}
-MEMCHR(m_libc_soname, memchr)
-MEMCHR(m_dyld, memchr)
+MEMCHR(VG_Z_LIBC_SONAME, memchr)
+MEMCHR(VG_Z_DYLD, memchr)
#define MEMCPY(soname, fnname) \
@@ -485,9 +458,9 @@
#if defined(VGO_darwin)
/* Darwin's memcpy() is overlap-safe, so replace it with MEMMOVE instead. */
#else
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
@@ -525,11 +498,11 @@
return 0; \
}
-MEMCMP(m_libc_soname, memcmp)
-MEMCMP(m_dyld, memcmp)
-MEMCMP(m_libc_soname, bcmp)
-MEMCMP(m_dyld, bcmp)
-MEMCMP(m_ld_so_1, bcmp)
+MEMCMP(VG_Z_LIBC_SONAME, memcmp)
+MEMCMP(VG_Z_DYLD, memcmp)
+MEMCMP(VG_Z_LIBC_SONAME, bcmp)
+MEMCMP(VG_Z_DYLD, bcmp)
+MEMCMP(VG_Z_LD_SO_1, bcmp)
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -555,10 +528,10 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
-STPCPY(m_dyld, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
+STPCPY(VG_Z_DYLD, stpcpy)
#define MEMSET(soname, fnname) \
@@ -580,8 +553,8 @@
return s; \
}
-MEMSET(m_libc_soname, memset)
-MEMSET(m_dyld, memset)
+MEMSET(VG_Z_LIBC_SONAME, memset)
+MEMSET(VG_Z_DYLD, memset)
#define MEMMOVE(soname, fnname) \
@@ -605,12 +578,12 @@
return dst; \
}
-MEMMOVE(m_libc_soname, memmove)
-MEMMOVE(m_dyld, memmove)
+MEMMOVE(VG_Z_LIBC_SONAME, memmove)
+MEMMOVE(VG_Z_DYLD, memmove)
#if defined(VGO_darwin)
/* Darwin's memcpy() is overlap-safe, so use MEMMOVE for memcpy() too. */
-MEMMOVE(m_libc_soname, memcpy)
-MEMMOVE(m_dyld, memcpy)
+MEMMOVE(VG_Z_LIBC_SONAME, memcpy)
+MEMMOVE(VG_Z_DYLD, memcpy)
#endif
@@ -634,8 +607,8 @@
} \
}
-BCOPY(m_libc_soname, bcopy)
-BCOPY(m_dyld, bcopy)
+BCOPY(VG_Z_LIBC_SONAME, bcopy)
+BCOPY(VG_Z_DYLD, bcopy)
/* glibc 2.5 variant of memmove which checks the dest is big enough.
@@ -671,7 +644,7 @@
return NULL; \
}
-GLIBC25___MEMMOVE_CHK(m_libc_soname, __memmove_chk)
+GLIBC25___MEMMOVE_CHK(VG_Z_LIBC_SONAME, __memmove_chk)
/* Find the first occurrence of C in S or the final NUL byte. */
@@ -688,7 +661,7 @@
} \
}
-GLIBC232_STRCHRNUL(m_libc_soname, strchrnul)
+GLIBC232_STRCHRNUL(VG_Z_LIBC_SONAME, strchrnul)
/* Find the first occurrence of C in S. */
@@ -704,7 +677,7 @@
} \
}
-GLIBC232_RAWMEMCHR(m_libc_soname, rawmemchr)
+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
/* glibc variant of strcpy that checks the dest is big enough.
@@ -732,7 +705,7 @@
return NULL; \
}
-GLIBC25___STRCPY_CHK(m_libc_soname, __strcpy_chk)
+GLIBC25___STRCPY_CHK(VG_Z_LIBC_SONAME, __strcpy_chk)
/* glibc variant of stpcpy that checks the dest is big enough.
@@ -759,7 +732,7 @@
return NULL; \
}
-GLIBC25___STPCPY_CHK(m_libc_soname, __stpcpy_chk)
+GLIBC25___STPCPY_CHK(VG_Z_LIBC_SONAME, __stpcpy_chk)
/* mempcpy */
@@ -795,8 +768,8 @@
return (void*)( ((char*)dst) + len_saved ); \
}
-GLIBC25_MEMPCPY(m_libc_soname, mempcpy)
-GLIBC25_MEMPCPY(m_ld_so_1, mempcpy) /* ld.so.1 */
+GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)
+GLIBC25_MEMPCPY(VG_Z_LD_SO_1, mempcpy) /* ld.so.1 */
#define GLIBC26___MEMCPY_CHK(soname, fnname) \
@@ -840,7 +813,7 @@
return NULL; \
}
-GLIBC26___MEMCPY_CHK(m_libc_soname, __memcpy_chk)
+GLIBC26___MEMCPY_CHK(VG_Z_LIBC_SONAME, __memcpy_chk)
/*------------------------------------------------------------*/
@@ -850,8 +823,8 @@
#if defined(VGO_linux)
/* putenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string)
{
OrigFn fn;
Word result;
@@ -867,8 +840,8 @@
}
/* unsetenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name)
{
OrigFn fn;
Word result;
@@ -884,9 +857,9 @@
}
/* setenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite)
{
OrigFn fn;
|