1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h> 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "valgrind.h" 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The simplest possible wrapping test: just call a wrapped function 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown and check we run the wrapper instead. Except: the wrapped 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown function is in a different shared object. This causes some 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown additional complications on ppc64-linux, hence another test. */ 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void actual ( void ); 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The wrapper. The function being wrapped is in a .so with soname 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "wrap7so.so". */ 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid I_WRAP_SONAME_FNNAME_ZU(wrap7soZdso,actual) ( void ) 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown OrigFn fn; 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_GET_ORIG_FN(fn); 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("wrapper-pre\n"); 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown CALL_FN_v_v(fn); 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("wrapper-post\n"); 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --------------- */ 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main ( void ) 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("starting\n"); 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown actual(); 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 31