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;