Module Name: src
Committed By: joerg
Date: Wed Jul 28 13:51:41 UTC 2010
Modified Files:
src/distrib/sets/lists/tests: mi
src/tests/lib/csu: Makefile t_crt0.sh
Added Files:
src/tests/lib/csu: h_initfini1.cxx h_initfini3.cxx
h_initfini_common.cxx
src/tests/lib/csu/dso: Makefile h_initfini3_dso.cxx
Removed Files:
src/tests/lib/csu: h_initfini.c
src/tests/lib/csu/arch/alpha: initfini_asm.S
src/tests/lib/csu/arch/arm: initfini_asm.S
src/tests/lib/csu/arch/hppa: initfini_asm.S
src/tests/lib/csu/arch/i386: initfini_asm.S
src/tests/lib/csu/arch/m68k: initfini_asm.S
src/tests/lib/csu/arch/mips: initfini_asm.S
src/tests/lib/csu/arch/powerpc: initfini_asm.S
src/tests/lib/csu/arch/sh3: initfini_asm.S
src/tests/lib/csu/arch/sparc: initfini_asm.S
src/tests/lib/csu/arch/sparc64: initfini_asm.S
src/tests/lib/csu/arch/vax: initfini_asm.S
src/tests/lib/csu/arch/x86_64: initfini_asm.S
Log Message:
Replace csu test case with a C++ based version. This makes the various
assembler routines obsolete. Be more exhaustive by testing dynamically
linked, statically linked and dynamically loaded.
XXX currently hard-codes /usr/tests due to limitations of bsd.test.mk
To generate a diff of this commit:
cvs rdiff -u -r1.119 -r1.120 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/csu/Makefile \
src/tests/lib/csu/t_crt0.sh
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/h_initfini.c
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/h_initfini1.cxx \
src/tests/lib/csu/h_initfini3.cxx src/tests/lib/csu/h_initfini_common.cxx
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/alpha/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/arm/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/hppa/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/i386/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/m68k/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/mips/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/powerpc/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/sh3/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/sparc/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/sparc64/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/vax/initfini_asm.S
cvs rdiff -u -r1.1 -r0 src/tests/lib/csu/arch/x86_64/initfini_asm.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/dso/Makefile \
src/tests/lib/csu/dso/h_initfini3_dso.cxx
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.119 src/distrib/sets/lists/tests/mi:1.120
--- src/distrib/sets/lists/tests/mi:1.119 Mon Jul 26 19:19:15 2010
+++ src/distrib/sets/lists/tests/mi Wed Jul 28 13:51:38 2010
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.119 2010/07/26 19:19:15 pooka Exp $
+# $NetBSD: mi,v 1.120 2010/07/28 13:51:38 joerg Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -265,7 +265,9 @@
./usr/libdata/debug/usr/tests/kernel/tty/t_pr.debug tests-kernel-tests debug,atf
./usr/libdata/debug/usr/tests/lib tests-lib-debug
./usr/libdata/debug/usr/tests/lib/csu tests-lib-debug
-./usr/libdata/debug/usr/tests/lib/csu/h_initfini.debug tests-lib-debug debug,atf
+./usr/libdata/debug/usr/tests/lib/csu/h_initfini1.debug tests-lib-debug debug,atf
+./usr/libdata/debug/usr/tests/lib/csu/h_initfini2.debug tests-lib-debug debug,atf
+./usr/libdata/debug/usr/tests/lib/csu/h_initfini3.debug tests-lib-debug debug,atf
./usr/libdata/debug/usr/tests/lib/libc tests-lib-debug
./usr/libdata/debug/usr/tests/lib/libc/hash tests-lib-debug
./usr/libdata/debug/usr/tests/lib/libc/hash/t_sha2.debug tests-lib-debug debug,atf
@@ -1371,7 +1373,11 @@
./usr/tests/lib/Atffile tests-lib-tests atf
./usr/tests/lib/csu tests-lib-tests
./usr/tests/lib/csu/Atffile tests-lib-tests atf
-./usr/tests/lib/csu/h_initfini tests-lib-tests atf
+./usr/tests/lib/csu/h_initfini1 tests-lib-tests atf
+./usr/tests/lib/csu/h_initfini2 tests-lib-tests atf
+./usr/tests/lib/csu/h_initfini3 tests-lib-tests atf
+./usr/tests/lib/csu/libh_initfini3_dso.so tests-lib-tests atf
+./usr/tests/lib/csu/libh_initfini3_dso.so.1 tests-lib-tests atf
./usr/tests/lib/csu/t_crt0 tests-lib-tests atf
./usr/tests/lib/libc tests-lib-tests
./usr/tests/lib/libc/Atffile tests-lib-tests atf
Index: src/tests/lib/csu/Makefile
diff -u src/tests/lib/csu/Makefile:1.1 src/tests/lib/csu/Makefile:1.2
--- src/tests/lib/csu/Makefile:1.1 Sat Jul 17 19:25:27 2010
+++ src/tests/lib/csu/Makefile Wed Jul 28 13:51:38 2010
@@ -1,19 +1,20 @@
-# $NetBSD: Makefile,v 1.1 2010/07/17 19:25:27 jmmv Exp $
+# $NetBSD: Makefile,v 1.2 2010/07/28 13:51:38 joerg Exp $
-NOMAN= # defined
+NOMAN= # defined
.include <bsd.own.mk>
-TESTSDIR= ${TESTSBASE}/lib/csu
-
-.if exists(arch/${MACHINE_CPU}/initfini_asm.S)
-TESTS_SH= t_crt0
-
-BINDIR= ${TESTSDIR}
-PROG= h_initfini
-SRCS= h_initfini.c initfini_asm.S
-WARNS?= 1
-.PATH: ${.CURDIR}/arch/${MACHINE_CPU}
-.endif
+TESTSDIR= ${TESTSBASE}/lib/csu
+TESTS_SH= t_crt0
+TESTS_SUBDIRS=
+SUBDIR+= dso
+
+BINDIR= ${TESTSDIR}
+PROG_CXX= h_initfini1 h_initfini2 h_initfini3
+SRCS.h_initfini1= h_initfini1.cxx h_initfini_common.cxx
+SRCS.h_initfini2= h_initfini1.cxx h_initfini_common.cxx
+LDADD.h_initfini2+= -static
+SRCS.h_initfini3= h_initfini3.cxx h_initfini_common.cxx
+LDADD.h_initfini3+= -Wl,-rpath,${TESTSDIR}
.include <bsd.test.mk>
Index: src/tests/lib/csu/t_crt0.sh
diff -u src/tests/lib/csu/t_crt0.sh:1.1 src/tests/lib/csu/t_crt0.sh:1.2
--- src/tests/lib/csu/t_crt0.sh:1.1 Sat Jul 17 19:25:27 2010
+++ src/tests/lib/csu/t_crt0.sh Wed Jul 28 13:51:38 2010
@@ -1,4 +1,4 @@
-# $NetBSD: t_crt0.sh,v 1.1 2010/07/17 19:25:27 jmmv Exp $
+# $NetBSD: t_crt0.sh,v 1.2 2010/07/28 13:51:38 joerg Exp $
#
# Copyright (c) 2008 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -25,24 +25,64 @@
# POSSIBILITY OF SUCH DAMAGE.
#
-atf_test_case initfini
-initfini_head()
+atf_test_case initfini1
+initfini1_head()
{
atf_set "descr" "Checks support for init/fini sections"
atf_set "use.fs" "true"
}
-initfini_body()
+initfini1_body()
{
cat >expout <<EOF
-I am init.
-I am main.
-I am fini.
+constructor executed
+main executed
+destructor executed
EOF
- atf_check -o file:expout "$(atf_get_srcdir)/h_initfini"
+ atf_check -o file:expout "$(atf_get_srcdir)/h_initfini1"
+}
+
+atf_test_case initfini2
+initfini2_head()
+{
+ atf_set "descr" "Checks support for init/fini sections in static binaries"
+ atf_set "use.fs" "true"
+}
+initfini2_body()
+{
+ cat >expout <<EOF
+constructor executed
+main executed
+destructor executed
+EOF
+
+ atf_check -o file:expout "$(atf_get_srcdir)/h_initfini2"
+}
+
+atf_test_case initfini3
+initfini3_head()
+{
+ atf_set "descr" "Checks support for init/fini sections in dlopen"
+ atf_set "use.fs" "true"
+}
+initfini3_body()
+{
+ cat >expout <<EOF
+constructor executed
+main started
+constructor2 executed
+main after dlopen
+destructor2 executed
+main terminated
+destructor executed
+EOF
+
+ atf_check -o file:expout "$(atf_get_srcdir)/h_initfini3"
}
atf_init_test_cases()
{
- atf_add_test_case initfini
+ atf_add_test_case initfini1
+ atf_add_test_case initfini2
+ atf_add_test_case initfini3
}
Added files:
Index: src/tests/lib/csu/h_initfini1.cxx
diff -u /dev/null src/tests/lib/csu/h_initfini1.cxx:1.1
--- /dev/null Wed Jul 28 13:51:41 2010
+++ src/tests/lib/csu/h_initfini1.cxx Wed Jul 28 13:51:38 2010
@@ -0,0 +1,9 @@
+#include <unistd.h>
+
+int
+main(void)
+{
+ static const char msg[] = "main executed\n";
+ write(STDOUT_FILENO, msg, sizeof(msg) - 1);
+ return 0;
+}
Index: src/tests/lib/csu/h_initfini3.cxx
diff -u /dev/null src/tests/lib/csu/h_initfini3.cxx:1.1
--- /dev/null Wed Jul 28 13:51:41 2010
+++ src/tests/lib/csu/h_initfini3.cxx Wed Jul 28 13:51:38 2010
@@ -0,0 +1,22 @@
+#include <dlfcn.h>
+#include <err.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+ static const char msg1[] = "main started\n";
+ static const char msg2[] = "main after dlopen\n";
+ static const char msg3[] = "main terminated\n";
+
+ void *handle;
+
+ write(STDOUT_FILENO, msg1, sizeof(msg1) - 1);
+ handle = dlopen("libh_initfini3_dso.so", RTLD_NOW | RTLD_LOCAL);
+ if (handle == NULL)
+ err(1, "dlopen");
+ write(STDOUT_FILENO, msg2, sizeof(msg2) - 1);
+ dlclose(handle);
+ write(STDOUT_FILENO, msg3, sizeof(msg3) - 1);
+ return 0;
+}
Index: src/tests/lib/csu/h_initfini_common.cxx
diff -u /dev/null src/tests/lib/csu/h_initfini_common.cxx:1.1
--- /dev/null Wed Jul 28 13:51:41 2010
+++ src/tests/lib/csu/h_initfini_common.cxx Wed Jul 28 13:51:38 2010
@@ -0,0 +1,17 @@
+#include <unistd.h>
+
+class Test {
+public:
+ Test()
+ {
+ static const char msg[] = "constructor executed\n";
+ write(STDOUT_FILENO, msg, sizeof(msg) - 1);
+ }
+ ~Test()
+ {
+ static const char msg[] = "destructor executed\n";
+ write(STDOUT_FILENO, msg, sizeof(msg) - 1);
+ }
+};
+
+Test test;
Index: src/tests/lib/csu/dso/Makefile
diff -u /dev/null src/tests/lib/csu/dso/Makefile:1.1
--- /dev/null Wed Jul 28 13:51:41 2010
+++ src/tests/lib/csu/dso/Makefile Wed Jul 28 13:51:40 2010
@@ -0,0 +1,21 @@
+# $NetBSD: Makefile,v 1.1 2010/07/28 13:51:40 joerg Exp $
+
+NOMAN= # defined
+
+.include <bsd.own.mk>
+
+LIB= h_initfini3_dso
+SRCS= h_initfini3_dso.cxx
+
+TESTSBASE= /usr/tests
+LIBDIR= ${TESTSBASE}/lib/csu
+SHLIBDIR= ${TESTSBASE}/lib/csu
+SHLIB_MAJOR= 1
+
+MKSTATICLIB= no
+MKPROFILE= no
+MKPICINSTALL= no
+
+LIBISCXX= yes
+
+.include <bsd.lib.mk>
Index: src/tests/lib/csu/dso/h_initfini3_dso.cxx
diff -u /dev/null src/tests/lib/csu/dso/h_initfini3_dso.cxx:1.1
--- /dev/null Wed Jul 28 13:51:41 2010
+++ src/tests/lib/csu/dso/h_initfini3_dso.cxx Wed Jul 28 13:51:40 2010
@@ -0,0 +1,17 @@
+#include <unistd.h>
+
+class Test2 {
+public:
+ Test2()
+ {
+ static const char msg[] = "constructor2 executed\n";
+ write(STDOUT_FILENO, msg, sizeof(msg) - 1);
+ }
+ ~Test2()
+ {
+ static const char msg[] = "destructor2 executed\n";
+ write(STDOUT_FILENO, msg, sizeof(msg) - 1);
+ }
+};
+
+Test2 test2;