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