aboutsummaryrefslogtreecommitdiff
path: root/elf/multiload.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/multiload.c')
-rw-r--r--elf/multiload.c105
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;
-}