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;

Reply via email to