| @@ -1,85 +1,104 @@ | | | @@ -1,85 +1,104 @@ |
1 | # $NetBSD: t_crt0.sh,v 1.3 2010/11/07 17:51:20 jmmv Exp $ | | 1 | # $NetBSD: t_crt0.sh,v 1.4 2011/12/11 14:57:07 joerg Exp $ |
2 | # | | 2 | # |
3 | # Copyright (c) 2008 The NetBSD Foundation, Inc. | | 3 | # Copyright (c) 2008 The NetBSD Foundation, Inc. |
4 | # All rights reserved. | | 4 | # All rights reserved. |
5 | # | | 5 | # |
6 | # Redistribution and use in source and binary forms, with or without | | 6 | # Redistribution and use in source and binary forms, with or without |
7 | # modification, are permitted provided that the following conditions | | 7 | # modification, are permitted provided that the following conditions |
8 | # are met: | | 8 | # are met: |
9 | # 1. Redistributions of source code must retain the above copyright | | 9 | # 1. Redistributions of source code must retain the above copyright |
10 | # notice, this list of conditions and the following disclaimer. | | 10 | # notice, this list of conditions and the following disclaimer. |
11 | # 2. Redistributions in binary form must reproduce the above copyright | | 11 | # 2. Redistributions in binary form must reproduce the above copyright |
12 | # notice, this list of conditions and the following disclaimer in the | | 12 | # notice, this list of conditions and the following disclaimer in the |
13 | # documentation and/or other materials provided with the distribution. | | 13 | # documentation and/or other materials provided with the distribution. |
14 | # | | 14 | # |
15 | # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | | 15 | # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
16 | # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | | 16 | # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
17 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | | 17 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
18 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | | 18 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
19 | # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | 19 | # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | 20 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | 21 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 22 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 23 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 24 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
25 | # POSSIBILITY OF SUCH DAMAGE. | | 25 | # POSSIBILITY OF SUCH DAMAGE. |
26 | # | | 26 | # |
27 | | | 27 | |
28 | atf_test_case initfini1 | | 28 | atf_test_case initfini1 |
29 | initfini1_head() | | 29 | initfini1_head() |
30 | { | | 30 | { |
31 | atf_set "descr" "Checks support for init/fini sections" | | 31 | atf_set "descr" "Checks support for init/fini sections" |
32 | } | | 32 | } |
33 | initfini1_body() | | 33 | initfini1_body() |
34 | { | | 34 | { |
35 | cat >expout <<EOF | | 35 | cat >expout <<EOF |
36 | constructor executed | | 36 | constructor executed |
37 | main executed | | 37 | main executed |
38 | destructor executed | | 38 | destructor executed |
39 | EOF | | 39 | EOF |
40 | | | 40 | |
41 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini1" | | 41 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini1" |
42 | } | | 42 | } |
43 | | | 43 | |
44 | atf_test_case initfini2 | | 44 | atf_test_case initfini2 |
45 | initfini2_head() | | 45 | initfini2_head() |
46 | { | | 46 | { |
47 | atf_set "descr" "Checks support for init/fini sections in static binaries" | | 47 | atf_set "descr" "Checks support for init/fini sections in static binaries" |
48 | } | | 48 | } |
49 | initfini2_body() | | 49 | initfini2_body() |
50 | { | | 50 | { |
51 | cat >expout <<EOF | | 51 | cat >expout <<EOF |
52 | constructor executed | | 52 | constructor executed |
53 | main executed | | 53 | main executed |
54 | destructor executed | | 54 | destructor executed |
55 | EOF | | 55 | EOF |
56 | | | 56 | |
57 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini2" | | 57 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini2" |
58 | } | | 58 | } |
59 | | | 59 | |
60 | atf_test_case initfini3 | | 60 | atf_test_case initfini3 |
61 | initfini3_head() | | 61 | initfini3_head() |
62 | { | | 62 | { |
63 | atf_set "descr" "Checks support for init/fini sections in dlopen" | | 63 | atf_set "descr" "Checks support for init/fini sections in dlopen" |
64 | } | | 64 | } |
65 | initfini3_body() | | 65 | initfini3_body() |
66 | { | | 66 | { |
67 | cat >expout <<EOF | | 67 | cat >expout <<EOF |
68 | constructor executed | | 68 | constructor executed |
69 | main started | | 69 | main started |
70 | constructor2 executed | | 70 | constructor2 executed |
71 | main after dlopen | | 71 | main after dlopen |
72 | destructor2 executed | | 72 | destructor2 executed |
73 | main terminated | | 73 | main terminated |
74 | destructor executed | | 74 | destructor executed |
75 | EOF | | 75 | EOF |
76 | | | 76 | |
77 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini3" | | 77 | atf_check -o file:expout "$(atf_get_srcdir)/h_initfini3" |
78 | } | | 78 | } |
79 | | | 79 | |
| | | 80 | atf_test_case initfini4 |
| | | 81 | initfini4_head() |
| | | 82 | { |
| | | 83 | atf_set "descr" "Checks support for init/fini sections in LD_PRELOAD" |
| | | 84 | } |
| | | 85 | initfini4_body() |
| | | 86 | { |
| | | 87 | cat >expout <<EOF |
| | | 88 | constructor2 executed |
| | | 89 | constructor executed |
| | | 90 | main executed |
| | | 91 | destructor executed |
| | | 92 | destructor2 executed |
| | | 93 | EOF |
| | | 94 | |
| | | 95 | atf_check -o file:expout -x "env LD_PRELOAD=$(atf_get_srcdir)/h_initfini3_dso.so $(atf_get_srcdir)/h_initfini1" |
| | | 96 | } |
| | | 97 | |
80 | atf_init_test_cases() | | 98 | atf_init_test_cases() |
81 | { | | 99 | { |
82 | atf_add_test_case initfini1 | | 100 | atf_add_test_case initfini1 |
83 | atf_add_test_case initfini2 | | 101 | atf_add_test_case initfini2 |
84 | atf_add_test_case initfini3 | | 102 | atf_add_test_case initfini3 |
| | | 103 | atf_add_test_case initfini4 |
85 | } | | 104 | } |