t_trapsignal.sh revision 1.4
11.4Skamil# $NetBSD: t_trapsignal.sh,v 1.4 2018/05/27 17:04:45 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.4Skamil 331.4Skamil# SIGSEGV 341.4Skamil 351.3Skamilatf_test_case segv_simple 361.3Skamilsegv_simple() 371.3Skamil{ 381.3Skamil atf_set "descr" "Test unhandled SIGSEGV with the right exit code" 391.3Skamil} 401.3Skamilsegv_simple_body() 411.3Skamil{ 421.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 431.3Skamil ${HELPER} segv recurse 441.3Skamil} 451.3Skamil 461.3Skamilatf_test_case segv_handle 471.3Skamilsegv_handle() 481.3Skamil{ 491.3Skamil atf_set "descr" "Test handled SIGSEGV traps call the signal handler" 501.3Skamil} 511.3Skamilsegv_handle_body() 521.3Skamil{ 531.3Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 11\n" \ 541.3Skamil ${HELPER} segv handle 551.3Skamil} 561.3Skamil 571.3Skamilatf_test_case segv_mask 581.3Skamilsegv_mask() 591.3Skamil{ 601.3Skamil atf_set "descr" "Test that masking SIGSEGV get reset" 611.3Skamil} 621.3Skamilsegv_mask_body() 631.3Skamil{ 641.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 651.3Skamil ${HELPER} segv mask 661.3Skamil} 671.3Skamil 681.3Skamilatf_test_case segv_handle_mask 691.3Skamilsegv_handle_mask() 701.3Skamil{ 711.3Skamil atf_set "descr" "Test handled and masked SIGSEGV traps get reset" 721.3Skamil} 731.3Skamilsegv_handle_mask_body() 741.3Skamil{ 751.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 761.3Skamil ${HELPER} segv mask handle 771.3Skamil} 781.3Skamil 791.3Skamilatf_test_case segv_handle_recurse 801.3Skamilsegv_handle_recurse() 811.3Skamil{ 821.3Skamil atf_set "descr" "Test that receiving SIGSEGV in the handler resets" 831.3Skamil} 841.3Skamil 851.3Skamilsegv_handle_recurse_body() 861.3Skamil{ 871.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:got 11\n" \ 881.3Skamil ${HELPER} segv handle recurse 891.3Skamil} 901.3Skamil 911.3Skamilatf_test_case segv_ignore 921.3Skamilsegv_ignore() 931.3Skamil{ 941.3Skamil atf_set "descr" "Test ignored SIGSEGV trap with right exit code" 951.3Skamil} 961.3Skamil 971.3Skamilsegv_ignore_body() 981.3Skamil{ 991.3Skamil atf_check -s signal:11 -o "inline:" -e "inline:" \ 1001.3Skamil ${HELPER} segv ignore 1011.3Skamil} 1021.3Skamil 1031.4Skamil# SIGTRAP 1041.4Skamil 1051.1Schristosatf_test_case trap_simple 1061.1Schristostrap_simple() 1071.1Schristos{ 1081.3Skamil atf_set "descr" "Test unhandled SIGTRAP with the right exit code" 1091.1Schristos} 1101.1Schristostrap_simple_body() 1111.1Schristos{ 1121.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1131.3Skamil ${HELPER} trap recurse 1141.1Schristos} 1151.1Schristos 1161.1Schristosatf_test_case trap_handle 1171.1Schristostrap_handle() 1181.1Schristos{ 1191.3Skamil atf_set "descr" "Test handled SIGTRAP traps call the signal handler" 1201.1Schristos} 1211.1Schristostrap_handle_body() 1221.1Schristos{ 1231.3Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 5\n" \ 1241.3Skamil ${HELPER} trap handle 1251.1Schristos} 1261.1Schristos 1271.1Schristosatf_test_case trap_mask 1281.1Schristostrap_mask() 1291.1Schristos{ 1301.3Skamil atf_set "descr" "Test that masking the trapped SIGTRAP signal get reset" 1311.1Schristos} 1321.1Schristostrap_mask_body() 1331.1Schristos{ 1341.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1351.3Skamil ${HELPER} trap mask 1361.1Schristos} 1371.1Schristos 1381.1Schristosatf_test_case trap_handle_mask 1391.1Schristostrap_handle_mask() 1401.1Schristos{ 1411.3Skamil atf_set "descr" "Test handled and masked SIGTRAP traps get reset" 1421.1Schristos} 1431.1Schristostrap_handle_mask_body() 1441.1Schristos{ 1451.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1461.3Skamil ${HELPER} trap mask handle 1471.1Schristos} 1481.1Schristos 1491.1Schristosatf_test_case trap_handle_recurse 1501.1Schristostrap_handle_recurse() 1511.1Schristos{ 1521.3Skamil atf_set "descr" "Test that receiving SIGTRAP in the handler resets" 1531.1Schristos} 1541.1Schristos 1551.1Schristostrap_handle_recurse_body() 1561.1Schristos{ 1571.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:got 5\n" \ 1581.3Skamil ${HELPER} trap handle recurse 1591.1Schristos} 1601.1Schristos 1611.2Skamilatf_test_case trap_ignore 1621.2Skamiltrap_ignore() 1631.2Skamil{ 1641.2Skamil atf_set "descr" "Test ignored trap with right exit code" 1651.2Skamil} 1661.2Skamil 1671.2Skamiltrap_ignore_body() 1681.2Skamil{ 1691.3Skamil atf_check -s signal:5 -o "inline:" -e "inline:" \ 1701.3Skamil ${HELPER} trap ignore 1711.2Skamil} 1721.2Skamil 1731.4Skamil# SIGFPE 1741.4Skamil 1751.4Skamilatf_test_case fpe_simple 1761.4Skamilfpe_simple() 1771.4Skamil{ 1781.4Skamil atf_set "descr" "Test unhandled SIGFPE with the right exit code" 1791.4Skamil} 1801.4Skamilfpe_simple_body() 1811.4Skamil{ 1821.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 1831.4Skamil ${HELPER} fpe recurse 1841.4Skamil} 1851.4Skamil 1861.4Skamilatf_test_case fpe_handle 1871.4Skamilfpe_handle() 1881.4Skamil{ 1891.4Skamil atf_set "descr" "Test handled SIGFPE traps call the signal handler" 1901.4Skamil} 1911.4Skamilfpe_handle_body() 1921.4Skamil{ 1931.4Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 8\n" \ 1941.4Skamil ${HELPER} fpe handle 1951.4Skamil} 1961.4Skamil 1971.4Skamilatf_test_case fpe_mask 1981.4Skamilfpe_mask() 1991.4Skamil{ 2001.4Skamil atf_set "descr" "Test that masking the trapped SIGFPE signal get reset" 2011.4Skamil} 2021.4Skamilfpe_mask_body() 2031.4Skamil{ 2041.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2051.4Skamil ${HELPER} fpe mask 2061.4Skamil} 2071.4Skamil 2081.4Skamilatf_test_case fpe_handle_mask 2091.4Skamilfpe_handle_mask() 2101.4Skamil{ 2111.4Skamil atf_set "descr" "Test handled and masked SIGFPE traps get reset" 2121.4Skamil} 2131.4Skamilfpe_handle_mask_body() 2141.4Skamil{ 2151.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2161.4Skamil ${HELPER} fpe mask handle 2171.4Skamil} 2181.4Skamil 2191.4Skamilatf_test_case fpe_handle_recurse 2201.4Skamilfpe_handle_recurse() 2211.4Skamil{ 2221.4Skamil atf_set "descr" "Test that receiving SIGFPE in the handler resets" 2231.4Skamil} 2241.4Skamil 2251.4Skamilfpe_handle_recurse_body() 2261.4Skamil{ 2271.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:got 8\n" \ 2281.4Skamil ${HELPER} fpe handle recurse 2291.4Skamil} 2301.4Skamil 2311.4Skamilatf_test_case fpe_ignore 2321.4Skamilfpe_ignore() 2331.4Skamil{ 2341.4Skamil atf_set "descr" "Test ignored trap with right exit code" 2351.4Skamil} 2361.4Skamil 2371.4Skamilfpe_ignore_body() 2381.4Skamil{ 2391.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2401.4Skamil ${HELPER} fpe ignore 2411.4Skamil} 2421.4Skamil 2431.4Skamil# SIGBUS 2441.4Skamil 2451.4Skamilatf_test_case bus_simple 2461.4Skamilbus_simple() 2471.4Skamil{ 2481.4Skamil atf_set "descr" "Test unhandled SIGBUS with the right exit code" 2491.4Skamil} 2501.4Skamilbus_simple_body() 2511.4Skamil{ 2521.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 2531.4Skamil ${HELPER} bus recurse 2541.4Skamil} 2551.4Skamil 2561.4Skamilatf_test_case bus_handle 2571.4Skamilbus_handle() 2581.4Skamil{ 2591.4Skamil atf_set "descr" "Test handled SIGBUS traps call the signal handler" 2601.4Skamil} 2611.4Skamilbus_handle_body() 2621.4Skamil{ 2631.4Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 10\n" \ 2641.4Skamil ${HELPER} bus handle 2651.4Skamil} 2661.4Skamil 2671.4Skamilatf_test_case bus_mask 2681.4Skamilbus_mask() 2691.4Skamil{ 2701.4Skamil atf_set "descr" "Test that masking the trapped SIGBUS signal get reset" 2711.4Skamil} 2721.4Skamilbus_mask_body() 2731.4Skamil{ 2741.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 2751.4Skamil ${HELPER} bus mask 2761.4Skamil} 2771.4Skamil 2781.4Skamilatf_test_case bus_handle_mask 2791.4Skamilbus_handle_mask() 2801.4Skamil{ 2811.4Skamil atf_set "descr" "Test handled and masked SIGBUS traps get reset" 2821.4Skamil} 2831.4Skamilbus_handle_mask_body() 2841.4Skamil{ 2851.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 2861.4Skamil ${HELPER} bus mask handle 2871.4Skamil} 2881.4Skamil 2891.4Skamilatf_test_case bus_handle_recurse 2901.4Skamilbus_handle_recurse() 2911.4Skamil{ 2921.4Skamil atf_set "descr" "Test that receiving SIGBUS in the handler resets" 2931.4Skamil} 2941.4Skamil 2951.4Skamilbus_handle_recurse_body() 2961.4Skamil{ 2971.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:got 10\n" \ 2981.4Skamil ${HELPER} bus handle recurse 2991.4Skamil} 3001.4Skamil 3011.4Skamilatf_test_case bus_ignore 3021.4Skamilbus_ignore() 3031.4Skamil{ 3041.4Skamil atf_set "descr" "Test ignored trap with right exit code" 3051.4Skamil} 3061.4Skamil 3071.4Skamilbus_ignore_body() 3081.4Skamil{ 3091.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 3101.4Skamil ${HELPER} bus ignore 3111.4Skamil} 3121.4Skamil 3131.1Schristosatf_init_test_cases() 3141.1Schristos{ 3151.3Skamil atf_add_test_case segv_simple 3161.3Skamil atf_add_test_case segv_handle 3171.3Skamil atf_add_test_case segv_mask 3181.3Skamil atf_add_test_case segv_handle_recurse 3191.3Skamil atf_add_test_case segv_ignore 3201.3Skamil 3211.1Schristos atf_add_test_case trap_simple 3221.1Schristos atf_add_test_case trap_handle 3231.1Schristos atf_add_test_case trap_mask 3241.1Schristos atf_add_test_case trap_handle_recurse 3251.2Skamil atf_add_test_case trap_ignore 3261.4Skamil 3271.4Skamil# atf_add_test_case ill_simple 3281.4Skamil# atf_add_test_case ill_handle 3291.4Skamil# atf_add_test_case ill_mask 3301.4Skamil# atf_add_test_case ill_handle_recurse 3311.4Skamil# atf_add_test_case ill_ignore 3321.4Skamil 3331.4Skamil atf_add_test_case fpe_simple 3341.4Skamil atf_add_test_case fpe_handle 3351.4Skamil atf_add_test_case fpe_mask 3361.4Skamil atf_add_test_case fpe_handle_recurse 3371.4Skamil atf_add_test_case fpe_ignore 3381.4Skamil 3391.4Skamil atf_add_test_case bus_simple 3401.4Skamil atf_add_test_case bus_handle 3411.4Skamil atf_add_test_case bus_mask 3421.4Skamil atf_add_test_case bus_handle_recurse 3431.4Skamil atf_add_test_case bus_ignore 3441.1Schristos} 345