summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorMatthew Dempsky <matthew@cvs.openbsd.org>2012-08-16 18:19:37 +0000
committerMatthew Dempsky <matthew@cvs.openbsd.org>2012-08-16 18:19:37 +0000
commitb6314326114bec33f9e727e1692ad9ea3ef3369e (patch)
treeda7da36596239be0c968dabff084a9c42e44b060 /regress
parent596dfdcbfaa18ddc027efc2facbfd1e00ba7e2f6 (diff)
Add a test case to verify ld.so's randomdata section is initialized
too, since interpreters will be initialized by a slightly different code path than executables.
Diffstat (limited to 'regress')
-rw-r--r--regress/libexec/ld.so/randomdata/Makefile4
-rw-r--r--regress/libexec/ld.so/randomdata/ld.so-cookie/Makefile5
-rw-r--r--regress/libexec/ld.so/randomdata/ld.so-cookie/test.c21
3 files changed, 28 insertions, 2 deletions
diff --git a/regress/libexec/ld.so/randomdata/Makefile b/regress/libexec/ld.so/randomdata/Makefile
index d8600b4214f..96fde384ee2 100644
--- a/regress/libexec/ld.so/randomdata/Makefile
+++ b/regress/libexec/ld.so/randomdata/Makefile
@@ -1,5 +1,5 @@
-# $OpenBSD: Makefile,v 1.1 2012/08/16 17:21:05 matthew Exp $
+# $OpenBSD: Makefile,v 1.2 2012/08/16 18:19:36 matthew Exp $
-SUBDIR+= libaa prog-dynamic prog-static
+SUBDIR+= libaa prog-dynamic prog-static ld.so-cookie
.include <bsd.subdir.mk>
diff --git a/regress/libexec/ld.so/randomdata/ld.so-cookie/Makefile b/regress/libexec/ld.so/randomdata/ld.so-cookie/Makefile
new file mode 100644
index 00000000000..6d7a7ab712d
--- /dev/null
+++ b/regress/libexec/ld.so/randomdata/ld.so-cookie/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1 2012/08/16 18:19:36 matthew Exp $
+
+PROG=test
+
+.include <bsd.regress.mk>
diff --git a/regress/libexec/ld.so/randomdata/ld.so-cookie/test.c b/regress/libexec/ld.so/randomdata/ld.so-cookie/test.c
new file mode 100644
index 00000000000..a863637b52b
--- /dev/null
+++ b/regress/libexec/ld.so/randomdata/ld.so-cookie/test.c
@@ -0,0 +1,21 @@
+#include <assert.h>
+#include <dlfcn.h>
+#include <stddef.h>
+
+int
+main()
+{
+ void *dso;
+ long *guardptr;
+ long guard;
+
+ dso = dlopen("/usr/libexec/ld.so", RTLD_LOCAL|RTLD_LAZY);
+ assert(dso != NULL);
+ guardptr = dlsym(dso, "__guard");
+ assert(guardptr != NULL);
+
+ guard = *guardptr;
+ assert(guard != 0);
+
+ return (0);
+}