From: Bart Van Assche Date: Sun, 6 Mar 2011 12:39:12 +0000 (+0000) Subject: DRD: Added a (non-functional so far) file drd_darwin_intercepts.c. X-Git-Tag: svn/VALGRIND_3_7_0~633 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c5f17ab61b723395656e30865ea1a97cdc86714e;p=thirdparty%2Fvalgrind.git DRD: Added a (non-functional so far) file drd_darwin_intercepts.c. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11596 --- diff --git a/drd/Makefile.am b/drd/Makefile.am index edfd7deaef..6295fbd0e0 100644 --- a/drd/Makefile.am +++ b/drd/Makefile.am @@ -127,6 +127,10 @@ VGPRELOAD_DRD_SOURCES_COMMON = \ drd_qtcore_intercepts.c \ drd_strmem_intercepts.c +if VGCONF_OS_IS_DARWIN +VGPRELOAD_DRD_SOURCES_COMMON += drd_darwin_intercepts.c +endif + vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ $(VGPRELOAD_DRD_SOURCES_COMMON) vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ diff --git a/drd/drd_darwin_intercepts.c b/drd/drd_darwin_intercepts.c new file mode 100644 index 0000000000..eae2552109 --- /dev/null +++ b/drd/drd_darwin_intercepts.c @@ -0,0 +1,31 @@ +#include +#include +#include "valgrind.h" +#include "pub_tool_redir.h" + +#if 0 + +/* + * On Mac OS X shared library functions are lazily bound. The binding mechanism + * uses self-modifying code. Intercept dyld_stub_binder() in order to suppress + * the data accesses involved in this mechanism. + * + * See also the Mac OS X ABI Dynamic Loader Reference (http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/MachOReference/Reference/reference.html#//apple_ref/c/func/dyld_stub_binding_helper). + * See also the dyld_stub_binder() source code (http://www.opensource.apple.com/source/dyld/dyld-132.13/src/dyld_stub_binder.s). + */ +void* VG_WRAP_FUNCTION_ZZ(libSystemZdZaZddylib, dyldZustubZubinder) + (void** imageLoaderCache, uintptr_t lazyBindingInfoOffset); +void* VG_WRAP_FUNCTION_ZZ(libSystemZdZaZddylib, dyldZustubZubinder) + (void** imageLoaderCache, uintptr_t lazyBindingInfoOffset) +{ + void* res; + OrigFn fn; + + VALGRIND_GET_ORIG_FN(fn); + + CALL_FN_W_WW(res, fn, imageLoaderCache, lazyBindingInfoOffset); + + return res; +} + +#endif