Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: Aditya Vidyadhar Kamath <akamath996@gmail.com>,
	ulrich.weigand@de.ibm.com,  tom@tromey.com
Cc: gdb-patches@sourceware.org, Aditya.Kamath1@ibm.com,
	sangamesh.swamy@in.ibm.com
Subject: Re: [PATCH] Accept ksh88 exit status for SIGINT in shell.exp
Date: Tue, 20 Oct 2026 15:45:36 -0400	[thread overview]
Message-ID: <dbb6eeb9-b468-4e66-a383-cceb391e1a3e@polymtl.ca> (raw)
In-Reply-To: <20261015134604.81658-2-akamath996@gmail.com>

On 10/15/26 9:46 AM, Aditya Vidyadhar Kamath wrote:
> From: Aditya Vidyadhar Kamath <aditya.kamath1@ibm.com>
> 
> This patch is in continuation to Simon's patch [1].
> 
> gdb.base/shell.exp runs "kill -2 $$" under the shell, through both
> "shell" ("!") and "pipe" ("|"), and expects $_shell_exitsignal to be 2
> and $_shell_exitcode to be void, that is, a shell that dies from the
> signal.
> 
> On AIX, /bin/sh and /usr/bin/ksh are ksh88.  ksh88 catches SIGINT and
> calls exit (130) (128 + SIGINT) instead of dying from the signal.  GDB
> therefore sees a normal exit, sets $_shell_exitcode to 130 and leaves
> $_shell_exitsignal void.  This is correct reporting by GDB; the test
> assumes a shell that is killed by the signal.  The raw wait status of
> the shells on AIX 7.3 is:
> 
>   /usr/bin/ksh    exited, code 130
>   /usr/bin/ksh93  killed by signal 2
>   /usr/bin/bash   killed by signal 2
> 
> As a result these four tests failed on AIX:
> 
>   shell interrupt exitcode
>   shell interrupt exitsignal
>   pipe interrupt exitcode
>   pipe interrupt exitsignal
> 
> Add check_shell_interrupt_status, which replaces the duplicated checks.
> On AIX it also accepts $_shell_exitcode = 130 together with
> $_shell_exitsignal = void.
> 
> Tested on AIX 7.3 with a 64-bit GDB: gdb.base/shell.exp now gives
> 125 passes and no failures.  The four tests above failed before.
> 
> [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=bf842a2e8d6e9eb7429444904b1b31c8b85d5fb2
> ---
>  gdb/testsuite/gdb.base/shell.exp | 49 +++++++++++++++++++++++++++++---
>  1 file changed, 45 insertions(+), 4 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.base/shell.exp b/gdb/testsuite/gdb.base/shell.exp
> index 2e6c63585eb..e0f9b9fb1f2 100644
> --- a/gdb/testsuite/gdb.base/shell.exp
> +++ b/gdb/testsuite/gdb.base/shell.exp
> @@ -17,6 +17,49 @@
>  
>  load_lib completion-support.exp
>  
> +# Check the convenience variables after a shell command that ran
> +# "kill -2 $$".  PREFIX is "shell" or "pipe", and is used to name the
> +# tests.
> +#
> +# Usually the shell dies from SIGINT, so $_shell_exitcode is void and
> +# $_shell_exitsignal is 2.
> +#
> +# On AIX, /bin/sh and /usr/bin/ksh are ksh88.  ksh88 catches SIGINT and
> +# calls exit (130) (128 + SIGINT) instead of dying from the signal.  GDB
> +# then sees a normal exit and correctly sets $_shell_exitcode to 130 and
> +# leaves $_shell_exitsignal void.  Accept that outcome on AIX.  Shells
> +# that do die from the signal (e.g. ksh93 or bash) still give the usual
> +# result, and are accepted as well.
> +
> +proc check_shell_interrupt_status { prefix } {
> +    global gdb_prompt
> +
> +    set signaled 1
> +
> +    if { [istarget "*-*-aix*"] } {
> +	set test "$prefix interrupt exitcode"
> +	gdb_test_multiple "p \$_shell_exitcode" $test {
> +	    -re " = void\r\n$gdb_prompt $" {
> +		pass $test
> +	    }
> +	    -re " = 130\r\n$gdb_prompt $" {
> +		# Expected for ksh88, see the comment above.
> +		set signaled 0
> +		pass $test
> +	    }
> +	}
> +    } else {
> +	gdb_test "p \$_shell_exitcode" " = void" "$prefix interrupt exitcode"
> +    }

What is the value of the SHELL env var with ksh88?  Instead of doing an
"aix" check, would you be able to tell from that variable that the shell
is ksh88, and update expectations accordingly?

Simon

  reply	other threads:[~2026-10-20 19:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15 13:46 Aditya Vidyadhar Kamath
2026-10-20 19:45 ` Simon Marchi [this message]
2026-10-21  9:08   ` Aditya Kamath
2026-10-21 16:33   ` Tom Tromey
2026-10-21 16:42     ` Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dbb6eeb9-b468-4e66-a383-cceb391e1a3e@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=Aditya.Kamath1@ibm.com \
    --cc=akamath996@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=sangamesh.swamy@in.ibm.com \
    --cc=tom@tromey.com \
    --cc=ulrich.weigand@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox