t_trapsignal.sh revision 1.6
11.6Sgutterid# $NetBSD: t_trapsignal.sh,v 1.6 2023/05/05 01:27:18 gutteridge 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.6Sgutteridsegv_simple_head() 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.6Sgutteridsegv_handle_head() 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.6Sgutteridsegv_mask_head() 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.6Sgutteridsegv_handle_mask_head() 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.6Sgutteridsegv_handle_recurse_head() 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.6Sgutteridsegv_ignore_head() 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.6Sgutteridtrap_simple_head() 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.6Sgutteridtrap_handle_head() 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.6Sgutteridtrap_mask_head() 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.6Sgutteridtrap_handle_mask_head() 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.6Sgutteridtrap_handle_recurse_head() 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.6Sgutteridtrap_ignore_head() 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.5Smartinfpe_available() 1761.5Smartin{ 1771.5Smartin if ${HELPER} fpe check > msg.$$ 1781.5Smartin then 1791.5Smartin rm -f msg.$$ 1801.5Smartin else 1811.5Smartin msg=$( cat msg.$$ ) 1821.5Smartin rm -f msg.$$ 1831.5Smartin atf_skip "$msg" 1841.5Smartin fi 1851.5Smartin} 1861.5Smartin 1871.4Skamilatf_test_case fpe_simple 1881.6Sgutteridfpe_simple_head() 1891.4Skamil{ 1901.4Skamil atf_set "descr" "Test unhandled SIGFPE with the right exit code" 1911.4Skamil} 1921.4Skamilfpe_simple_body() 1931.4Skamil{ 1941.5Smartin fpe_available 1951.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 1961.4Skamil ${HELPER} fpe recurse 1971.4Skamil} 1981.4Skamil 1991.4Skamilatf_test_case fpe_handle 2001.6Sgutteridfpe_handle_head() 2011.4Skamil{ 2021.4Skamil atf_set "descr" "Test handled SIGFPE traps call the signal handler" 2031.4Skamil} 2041.4Skamilfpe_handle_body() 2051.4Skamil{ 2061.5Smartin fpe_available 2071.4Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 8\n" \ 2081.4Skamil ${HELPER} fpe handle 2091.4Skamil} 2101.4Skamil 2111.4Skamilatf_test_case fpe_mask 2121.6Sgutteridfpe_mask_head() 2131.4Skamil{ 2141.4Skamil atf_set "descr" "Test that masking the trapped SIGFPE signal get reset" 2151.4Skamil} 2161.4Skamilfpe_mask_body() 2171.4Skamil{ 2181.5Smartin fpe_available 2191.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2201.4Skamil ${HELPER} fpe mask 2211.4Skamil} 2221.4Skamil 2231.4Skamilatf_test_case fpe_handle_mask 2241.6Sgutteridfpe_handle_mask_head() 2251.4Skamil{ 2261.4Skamil atf_set "descr" "Test handled and masked SIGFPE traps get reset" 2271.4Skamil} 2281.4Skamilfpe_handle_mask_body() 2291.4Skamil{ 2301.5Smartin fpe_available 2311.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2321.4Skamil ${HELPER} fpe mask handle 2331.4Skamil} 2341.4Skamil 2351.4Skamilatf_test_case fpe_handle_recurse 2361.6Sgutteridfpe_handle_recurse_head() 2371.4Skamil{ 2381.4Skamil atf_set "descr" "Test that receiving SIGFPE in the handler resets" 2391.4Skamil} 2401.4Skamil 2411.4Skamilfpe_handle_recurse_body() 2421.4Skamil{ 2431.5Smartin fpe_available 2441.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:got 8\n" \ 2451.4Skamil ${HELPER} fpe handle recurse 2461.4Skamil} 2471.4Skamil 2481.4Skamilatf_test_case fpe_ignore 2491.6Sgutteridfpe_ignore_head() 2501.4Skamil{ 2511.4Skamil atf_set "descr" "Test ignored trap with right exit code" 2521.4Skamil} 2531.4Skamil 2541.4Skamilfpe_ignore_body() 2551.4Skamil{ 2561.5Smartin fpe_available 2571.4Skamil atf_check -s signal:8 -o "inline:" -e "inline:" \ 2581.4Skamil ${HELPER} fpe ignore 2591.4Skamil} 2601.4Skamil 2611.4Skamil# SIGBUS 2621.4Skamil 2631.4Skamilatf_test_case bus_simple 2641.6Sgutteridbus_simple_head() 2651.4Skamil{ 2661.4Skamil atf_set "descr" "Test unhandled SIGBUS with the right exit code" 2671.4Skamil} 2681.4Skamilbus_simple_body() 2691.4Skamil{ 2701.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 2711.4Skamil ${HELPER} bus recurse 2721.4Skamil} 2731.4Skamil 2741.4Skamilatf_test_case bus_handle 2751.6Sgutteridbus_handle_head() 2761.4Skamil{ 2771.4Skamil atf_set "descr" "Test handled SIGBUS traps call the signal handler" 2781.4Skamil} 2791.4Skamilbus_handle_body() 2801.4Skamil{ 2811.4Skamil atf_check -s exit:0 -o "inline:" -e "inline:got 10\n" \ 2821.4Skamil ${HELPER} bus handle 2831.4Skamil} 2841.4Skamil 2851.4Skamilatf_test_case bus_mask 2861.6Sgutteridbus_mask_head() 2871.4Skamil{ 2881.4Skamil atf_set "descr" "Test that masking the trapped SIGBUS signal get reset" 2891.4Skamil} 2901.4Skamilbus_mask_body() 2911.4Skamil{ 2921.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 2931.4Skamil ${HELPER} bus mask 2941.4Skamil} 2951.4Skamil 2961.4Skamilatf_test_case bus_handle_mask 2971.6Sgutteridbus_handle_mask_head() 2981.4Skamil{ 2991.4Skamil atf_set "descr" "Test handled and masked SIGBUS traps get reset" 3001.4Skamil} 3011.4Skamilbus_handle_mask_body() 3021.4Skamil{ 3031.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 3041.4Skamil ${HELPER} bus mask handle 3051.4Skamil} 3061.4Skamil 3071.4Skamilatf_test_case bus_handle_recurse 3081.6Sgutteridbus_handle_recurse_head() 3091.4Skamil{ 3101.4Skamil atf_set "descr" "Test that receiving SIGBUS in the handler resets" 3111.4Skamil} 3121.4Skamil 3131.4Skamilbus_handle_recurse_body() 3141.4Skamil{ 3151.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:got 10\n" \ 3161.4Skamil ${HELPER} bus handle recurse 3171.4Skamil} 3181.4Skamil 3191.4Skamilatf_test_case bus_ignore 3201.6Sgutteridbus_ignore_head() 3211.4Skamil{ 3221.4Skamil atf_set "descr" "Test ignored trap with right exit code" 3231.4Skamil} 3241.4Skamil 3251.4Skamilbus_ignore_body() 3261.4Skamil{ 3271.4Skamil atf_check -s signal:10 -o "inline:" -e "inline:" \ 3281.4Skamil ${HELPER} bus ignore 3291.4Skamil} 3301.4Skamil 3311.1Schristosatf_init_test_cases() 3321.1Schristos{ 3331.3Skamil atf_add_test_case segv_simple 3341.3Skamil atf_add_test_case segv_handle 3351.3Skamil atf_add_test_case segv_mask 3361.3Skamil atf_add_test_case segv_handle_recurse 3371.3Skamil atf_add_test_case segv_ignore 3381.3Skamil 3391.1Schristos atf_add_test_case trap_simple 3401.1Schristos atf_add_test_case trap_handle 3411.1Schristos atf_add_test_case trap_mask 3421.1Schristos atf_add_test_case trap_handle_recurse 3431.2Skamil atf_add_test_case trap_ignore 3441.4Skamil 3451.4Skamil# atf_add_test_case ill_simple 3461.4Skamil# atf_add_test_case ill_handle 3471.4Skamil# atf_add_test_case ill_mask 3481.4Skamil# atf_add_test_case ill_handle_recurse 3491.4Skamil# atf_add_test_case ill_ignore 3501.4Skamil 3511.4Skamil atf_add_test_case fpe_simple 3521.4Skamil atf_add_test_case fpe_handle 3531.4Skamil atf_add_test_case fpe_mask 3541.4Skamil atf_add_test_case fpe_handle_recurse 3551.4Skamil atf_add_test_case fpe_ignore 3561.4Skamil 3571.4Skamil atf_add_test_case bus_simple 3581.4Skamil atf_add_test_case bus_handle 3591.4Skamil atf_add_test_case bus_mask 3601.4Skamil atf_add_test_case bus_handle_recurse 3611.4Skamil atf_add_test_case bus_ignore 3621.1Schristos} 363