aboutsummaryrefslogtreecommitdiff
path: root/elf/reldep6.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/reldep6.c')
-rw-r--r--elf/reldep6.c109
1 files changed, 0 insertions, 109 deletions
diff --git a/elf/reldep6.c b/elf/reldep6.c
deleted file mode 100644
index 1eeec6c862..0000000000
--- a/elf/reldep6.c
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <dlfcn.h>
-#include <mcheck.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-typedef int (*fn)(void);
-#define CHUNKS 1024
-#define REPEAT 64
-
-int
-main (void)
-{
- void *h1;
- void *h2;
- fn **foopp;
- fn bar, baz;
- int i, j;
- int n;
- void *allocs[REPEAT][CHUNKS];
-
- mtrace ();
-
- /* Open the two objects. */
- h1 = dlopen ("reldep6mod3.so", RTLD_LAZY);
- if (h1 == NULL)
- {
- printf ("cannot open reldep6mod3.so: %s\n", dlerror ());
- exit (1);
- }
-
- foopp = dlsym (h1, "foopp");
- if (foopp == NULL)
- {
- printf ("cannot get address of \"foopp\": %s\n", dlerror ());
- exit (1);
- }
- n = (**foopp) ();
- if (n != 20)
- {
- printf ("(**foopp)() return %d, not return 20\n", n);
- exit (1);
- }
-
- h2 = dlopen ("reldep6mod4.so", RTLD_LAZY);
- if (h2 == NULL)
- {
- printf ("cannot open reldep6mod4.so: %s\n", dlerror ());
- exit (1);
- }
-
- baz = dlsym (h2, "baz");
- if (baz == NULL)
- {
- printf ("cannot get address of \"baz\": %s\n", dlerror ());
- exit (1);
- }
- if (baz () != 31)
- {
- printf ("baz() did not return 31\n");
- exit (1);
- }
-
- if (dlclose (h1) != 0)
- {
- printf ("closing h1 failed: %s\n", dlerror ());
- exit (1);
- }
-
- /* Clobber memory. */
- for (i = 0; i < REPEAT; ++i)
- for (j = 0; j < CHUNKS; ++j)
- allocs[i][j] = calloc (1, j + 1);
-
- bar = dlsym (h2, "bar");
- if (bar == NULL)
- {
- printf ("cannot get address of \"bar\": %s\n", dlerror ());
- exit (1);
- }
- if (bar () != 40)
- {
- printf ("bar() did not return 40\n");
- exit (1);
- }
-
- baz = dlsym (h2, "baz");
- if (baz == NULL)
- {
- printf ("cannot get address of \"baz\": %s\n", dlerror ());
- exit (1);
- }
- if (baz () != 31)
- {
- printf ("baz() did not return 31\n");
- exit (1);
- }
-
- for (i = 0; i < REPEAT; ++i)
- for (j = 0; j < CHUNKS; ++j)
- free (allocs[i][j]);
-
- if (dlclose (h2) != 0)
- {
- printf ("closing h2 failed: %s\n", dlerror ());
- exit (1);
- }
-
- return 0;
-}