1 2 #include <stdio.h> 3 #include "valgrind.h" 4 5 /* The simplest possible wrapping test: just call a wrapped function 6 and check we run the wrapper instead. */ 7 8 /* The "original" function */ 9 __attribute__((noinline)) actual(void)10void actual ( void ) 11 { 12 printf("in actual\n"); 13 } 14 15 /* The wrapper. Since this executable won't have a soname, we have to 16 use "NONE", since V treats any executable/.so which lacks a soname 17 as if its soname was "NONE". */ I_WRAP_SONAME_FNNAME_ZU(NONE,actual)18void I_WRAP_SONAME_FNNAME_ZU(NONE,actual) ( void ) 19 { 20 OrigFn fn; 21 VALGRIND_GET_ORIG_FN(fn); 22 printf("wrapper-pre\n"); 23 CALL_FN_v_v(fn); 24 printf("wrapper-post\n"); 25 } 26 27 /* --------------- */ 28 main(void)29int main ( void ) 30 { 31 printf("starting\n"); 32 actual(); 33 return 0; 34 } 35