diff options
Diffstat (limited to 'elf/origtest.c')
-rw-r--r-- | elf/origtest.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/elf/origtest.c b/elf/origtest.c new file mode 100644 index 0000000..11bd0f7 --- /dev/null +++ b/elf/origtest.c @@ -0,0 +1,38 @@ +#include <dlfcn.h> +#include <error.h> +#include <stdio.h> +#include <stdlib.h> + +int +main (void) +{ + void *h; + int (*fp) (int); + int res; + + h = dlopen ("${ORIGIN}/testobj1.so", RTLD_LAZY); + if (h == NULL) + error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1.so", + dlerror ()); + + fp = dlsym (h, "obj1func1"); + if (fp == NULL) + error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s", + "testobj1.so", dlerror ()); + + res = fp (10); + printf ("fp(10) = %d\n", res); + + if (dlclose (h) != 0) + error (EXIT_FAILURE, 0, "while close `%s': %s", + "testobj1.so", dlerror ()); + + return res != 42; +} + + +int +foo (int a) +{ + return a + 10; +} |