From: Paul Smith Date: Mon, 5 Jun 2017 00:06:48 +0000 (-0400) Subject: * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS X-Git-Tag: 4.2.90~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75b5268faf78f7c191f0aafe2250c9ec004659fe;p=thirdparty%2Fmake.git * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS * tests/scripts/functions/shell: Verify that .SHELLSTATUS contains a non-0 value when the shell exits due to a signal. --- diff --git a/function.c b/function.c index 8d8f198f..92a750dc 100644 --- a/function.c +++ b/function.c @@ -1469,6 +1469,9 @@ shell_completed (int exit_code, int exit_sig) else shell_function_completed = 1; + if (exit_code == 0 && exit_sig > 0) + exit_code = 128 + exit_sig; + sprintf (buf, "%d", exit_code); define_variable_cname (".SHELLSTATUS", buf, o_override, 0); } diff --git a/tests/scripts/functions/shell b/tests/scripts/functions/shell index 24e94ab8..6e446084 100644 --- a/tests/scripts/functions/shell +++ b/tests/scripts/functions/shell @@ -22,9 +22,16 @@ $(shell exit 0) OK := $(.SHELLSTATUS) $(shell exit 1) BAD := $(.SHELLSTATUS) +$(shell kill -2 $$$$) +SIG := $(.SHELLSTATUS) all: ; @echo PRE=$(PRE) OK=$(OK) BAD=$(BAD) ','','PRE= OK=0 BAD=1'); +run_make_test('.PHONY: all +$(shell kill -2 $$$$) +SIG := $(.SHELLSTATUS) +all: ; @echo SIG=$(SIG) + ','','SIG=130'); # Test unescaped comment characters in shells. Savannah bug #20513 run_make_test(q!