about summary refs log tree commit diff
path: root/elf/loadfail.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/loadfail.c')
-rw-r--r--elf/loadfail.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/elf/loadfail.c b/elf/loadfail.c
new file mode 100644
index 0000000000..60deb7737b
--- /dev/null
+++ b/elf/loadfail.c
@@ -0,0 +1,30 @@
+#include <dlfcn.h>
+#include <error.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+  void *h;
+
+  if (dlopen ("testobj1.so", RTLD_GLOBAL | RTLD_NOW) == NULL
+      || dlopen ("testobj1.so", RTLD_GLOBAL | RTLD_NOW) == NULL
+      || dlopen ("testobj2.so", RTLD_GLOBAL | RTLD_NOW) == NULL
+      || dlopen ("testobj3.so", RTLD_GLOBAL | RTLD_NOW) == NULL
+      || dlopen ("testobj4.so", RTLD_GLOBAL | RTLD_NOW) == NULL
+      || dlopen ("testobj5.so", RTLD_GLOBAL | RTLD_NOW) == NULL)
+    error (EXIT_FAILURE, 0, "failed to load shared object: %s", dlerror ());
+
+  h = dlopen ("failobj.so", RTLD_GLOBAL | RTLD_NOW);
+
+  printf ("h = %p, %s\n", h, h == NULL ? "ok" : "fail");
+
+  return h != NULL;
+}
+
+int
+foo (int a)
+{
+  return 10;
+}