#include <dlfcn.h> #include <stdio.h> int xyzzy (void) { printf ("%s:%s\n", __FILE__, __func__); return 21; } int back (void) { printf ("%s:%s\n", __FILE__, __func__); return 1; } extern int foo (void); static int do_test (void) { void *p = dlopen ("$ORIGIN/tst-deep1mod2.so", RTLD_LAZY|RTLD_DEEPBIND); int (*f) (void) = dlsym (p, "bar"); if (f == NULL) { puts (dlerror ()); return 1; } return foo () + f (); } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"