diff options
Diffstat (limited to 'elf/multiload.c')
-rw-r--r-- | elf/multiload.c | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/elf/multiload.c b/elf/multiload.c deleted file mode 100644 index e85cc96589..0000000000 --- a/elf/multiload.c +++ /dev/null @@ -1,105 +0,0 @@ -#include <dlfcn.h> -#include <errno.h> -#include <mcheck.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -int -main (void) -{ - void *a; - void *b; - void *c; - void *d; - char *wd; - char *base; - char *buf; - - mtrace (); - - /* Change to the binary directory. */ - if (chdir (OBJDIR) != 0) - { - printf ("cannot change to `%s': %m", OBJDIR); - exit (EXIT_FAILURE); - } - - wd = getcwd (NULL, 0); - base = basename (wd); - buf = alloca (strlen (wd) + strlen (base) + 5 + sizeof "testobj1.so"); - - printf ("loading `%s'\n", "./testobj1.so"); - a = dlopen ("./testobj1.so", RTLD_NOW); - if (a == NULL) - { - printf ("cannot load `./testobj1.so': %s\n", dlerror ()); - exit (EXIT_FAILURE); - } - - stpcpy (stpcpy (stpcpy (buf, "../"), base), "/testobj1.so"); - printf ("loading `%s'\n", buf); - b = dlopen (buf, RTLD_NOW); - if (b == NULL) - { - printf ("cannot load `%s': %s\n", buf, dlerror ()); - exit (EXIT_FAILURE); - } - - stpcpy (stpcpy (buf, wd), "/testobj1.so"); - printf ("loading `%s'\n", buf); - c = dlopen (buf, RTLD_NOW); - if (c == NULL) - { - printf ("cannot load `%s': %s\n", buf, dlerror ()); - exit (EXIT_FAILURE); - } - - stpcpy (stpcpy (stpcpy (stpcpy (buf, wd), "/../"), base), "/testobj1.so"); - printf ("loading `%s'\n", buf); - d = dlopen (buf, RTLD_NOW); - if (d == NULL) - { - printf ("cannot load `%s': %s\n", buf, dlerror ()); - exit (EXIT_FAILURE); - } - - if (a != b || b != c || c != d) - { - puts ("shared object loaded more than once"); - exit (EXIT_FAILURE); - } - - if (dlclose (a) != 0) - { - puts ("closing `a' failed"); - exit (EXIT_FAILURE); - } - if (dlclose (b) != 0) - { - puts ("closing `a' failed"); - exit (EXIT_FAILURE); - } - if (dlclose (c) != 0) - { - puts ("closing `a' failed"); - exit (EXIT_FAILURE); - } - if (dlclose (d) != 0) - { - puts ("closing `a' failed"); - exit (EXIT_FAILURE); - } - - free (wd); - - return 0; -} - -extern int foo (int a); -int -foo (int a) -{ - return a; -} |