t_trapsignal.sh revision 1.3
11.3Skamil# $NetBSD: t_trapsignal.sh,v 1.3 2018/05/22 04:32:56 kamil Exp $ 21.1Schristos# 31.1Schristos# Copyright (c) 2017 The NetBSD Foundation, Inc. 41.1Schristos# All rights reserved. 51.1Schristos# 61.1Schristos# This code is derived from software contributed to The NetBSD Foundation 71.1Schristos# by Christos Zoulas. 81.1Schristos# 91.1Schristos# Redistribution and use in source and binary forms, with or without 101.1Schristos# modification, are permitted provided that the following conditions 111.1Schristos# are met: 121.1Schristos# 1. Redistributions of source code must retain the above copyright 131.1Schristos# notice, this list of conditions and the following disclaimer. 141.1Schristos# 2. Redistributions in binary form must reproduce the above copyright 151.1Schristos# notice, this list of conditions and the following disclaimer in the 161.1Schristos# documentation and/or other materials provided with the distribution. 171.1Schristos# 181.1Schristos# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 191.1Schristos# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 201.1Schristos# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 211.1Schristos# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 221.1Schristos# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 231.1Schristos# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 241.1Schristos# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 251.1Schristos# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 261.1Schristos# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 271.1Schristos# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 281.1Schristos# POSSIBILITY OF SUCH DAMAGE. 291.1Schristos# 301.1Schristos 311.1SchristosHELPER=$(atf_get_srcdir)/h_segv 321.3Skamilatf_test_case segv_simple 331.3Skamilsegv_simple() 341.3Skamil{ 351.3Skamil atf_set "descr" "Test unhandled SIGSEGV with the right exit code" 361.3Skamil} 371.3Skamilsegv_simple_body() 381.3Skamil{ 391.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 401.3Skamil ${HELPER} segv recurse 411.3Skamil} 421.3Skamil 431.3Skamilatf_test_case segv_handle 441.3Skamilsegv_handle() 451.3Skamil{ 461.3Skamil atf_set "descr" "Test handled SIGSEGV traps call the signal handler" 471.3Skamil} 481.3Skamilsegv_handle_body() 491.3Skamil{ 501.3Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 11\n" \ 511.3Skamil ${HELPER} segv handle 521.3Skamil} 531.3Skamil 541.3Skamilatf_test_case segv_mask 551.3Skamilsegv_mask() 561.3Skamil{ 571.3Skamil atf_set "descr" "Test that masking SIGSEGV get reset" 581.3Skamil} 591.3Skamilsegv_mask_body() 601.3Skamil{ 611.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 621.3Skamil ${HELPER} segv mask 631.3Skamil} 641.3Skamil 651.3Skamilatf_test_case segv_handle_mask 661.3Skamilsegv_handle_mask() 671.3Skamil{ 681.3Skamil atf_set "descr" "Test handled and masked SIGSEGV traps get reset" 691.3Skamil} 701.3Skamilsegv_handle_mask_body() 711.3Skamil{ 721.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 731.3Skamil ${HELPER} segv mask handle 741.3Skamil} 751.3Skamil 761.3Skamilatf_test_case segv_handle_recurse 771.3Skamilsegv_handle_recurse() 781.3Skamil{ 791.3Skamil atf_set "descr" "Test that receiving SIGSEGV in the handler resets" 801.3Skamil} 811.3Skamil 821.3Skamilsegv_handle_recurse_body() 831.3Skamil{ 841.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:got 11\n" \ 851.3Skamil ${HELPER} segv handle recurse 861.3Skamil} 871.3Skamil 881.3Skamilatf_test_case segv_ignore 891.3Skamilsegv_ignore() 901.3Skamil{ 911.3Skamil atf_set "descr" "Test ignored SIGSEGV trap with right exit code" 921.3Skamil} 931.3Skamil 941.3Skamilsegv_ignore_body() 951.3Skamil{ 961.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 971.3Skamil ${HELPER} segv ignore 981.3Skamil} 991.3Skamil 1001.1Schristosatf_test_case trap_simple 1011.1Schristostrap_simple() 1021.1Schristos{ 1031.3Skamil atf_set "descr" "Test unhandled SIGTRAP with the right exit code" 1041.1Schristos} 1051.1Schristostrap_simple_body() 1061.1Schristos{ 1071.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1081.3Skamil ${HELPER} trap recurse 1091.1Schristos} 1101.1Schristos 1111.1Schristosatf_test_case trap_handle 1121.1Schristostrap_handle() 1131.1Schristos{ 1141.3Skamil atf_set "descr" "Test handled SIGTRAP traps call the signal handler" 1151.1Schristos} 1161.1Schristostrap_handle_body() 1171.1Schristos{ 1181.3Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 5\n" \ 1191.3Skamil ${HELPER} trap handle 1201.1Schristos} 1211.1Schristos 1221.1Schristosatf_test_case trap_mask 1231.1Schristostrap_mask() 1241.1Schristos{ 1251.3Skamil atf_set "descr" "Test that masking the trapped SIGTRAP signal get reset" 1261.1Schristos} 1271.1Schristostrap_mask_body() 1281.1Schristos{ 1291.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1301.3Skamil ${HELPER} trap mask 1311.1Schristos} 1321.1Schristos 1331.1Schristosatf_test_case trap_handle_mask 1341.1Schristostrap_handle_mask() 1351.1Schristos{ 1361.3Skamil atf_set "descr" "Test handled and masked SIGTRAP traps get reset" 1371.1Schristos} 1381.1Schristostrap_handle_mask_body() 1391.1Schristos{ 1401.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1411.3Skamil ${HELPER} trap mask handle 1421.1Schristos} 1431.1Schristos 1441.1Schristosatf_test_case trap_handle_recurse 1451.1Schristostrap_handle_recurse() 1461.1Schristos{ 1471.3Skamil atf_set "descr" "Test that receiving SIGTRAP in the handler resets" 1481.1Schristos} 1491.1Schristos 1501.1Schristostrap_handle_recurse_body() 1511.1Schristos{ 1521.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:got 5\n" \ 1531.3Skamil ${HELPER} trap handle recurse 1541.1Schristos} 1551.1Schristos 1561.2Skamilatf_test_case trap_ignore 1571.2Skamiltrap_ignore() 1581.2Skamil{ 1591.2Skamil atf_set "descr" "Test ignored trap with right exit code" 1601.2Skamil} 1611.2Skamil 1621.2Skamiltrap_ignore_body() 1631.2Skamil{ 1641.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1651.3Skamil ${HELPER} trap ignore 1661.2Skamil} 1671.2Skamil 1681.1Schristosatf_init_test_cases() 1691.1Schristos{ 1701.3Skamil atf_add_test_case segv_simple 1711.3Skamil atf_add_test_case segv_handle 1721.3Skamil atf_add_test_case segv_mask 1731.3Skamil atf_add_test_case segv_handle_recurse 1741.3Skamil atf_add_test_case segv_ignore 1751.3Skamil 1761.1Schristos atf_add_test_case trap_simple 1771.1Schristos atf_add_test_case trap_handle 1781.1Schristos atf_add_test_case trap_mask 1791.1Schristos atf_add_test_case trap_handle_recurse 1801.2Skamil atf_add_test_case trap_ignore 1811.1Schristos} 182