Hi Simon,

Thanks for the quick fix.

I tested both patches on AIX 7.3 with a 64-bit GDB configured without
Python, running gdb.base/shell.exp with
"gmake check RUNTESTFLAGS=gdb.base/shell.exp".  I ran it with the test
programs built with both -maix64 and -maix32.  


                                              expected  unexpected  unresolved
                                               passes    failures
  original GDB + new test                112       4           9
  patches 1 + 2, -maix64                 121       4           0
  patches 1 + 2, -maix32                 121       4           0


Without the fix, the new test reproduces the problem every time.  The log
shows:

  (gdb) pipe lots | exit 0
  ERROR: GDB process no longer exists
  GDB process exited with wait status ... CHILDKILLED SIGPIPE {write on pipe with no readers}

After that GDB is gone, so the 9 checks in test_pipe_reader_exits_early
are all reported as UNRESOLVED.  This is the same failure that gave me
75 unresolved results in a full 32-bit run of gdb.base.  There it
happened on the first pipe test, so the rest of shell.exp was lost.  With
the patches applied the test passes and there are no unresolved results.


The 4 remaining failures in shell.exp are not caused by your patches:

  1: shell interrupt exitcode
  2: shell interrupt exitsignal
  3: pipe interrupt exitcode
  4: pipe interrupt exitsignal

They fail the same way without the patches.  The tests run "kill -2 $$"
under the shell and expect $_shell_exitsignal = 2.  On AIX, /bin/sh and
/usr/bin/ksh are ksh88, which catches SIGINT and calls exit (130)
(128 + 2) instead of dying from the signal.  GDB then sees a normal exit,
sets $_shell_exitcode = 130 and leaves $_shell_exitsignal void.  I
checked the raw wait status of each shell:

  /usr/bin/ksh    exited, code 130
  /usr/bin/ksh93  killed by signal 2
  /usr/bin/bash   killed by signal 2

So GDB reports what happened correctly, and the test assumes a shell
that dies from the signal.  "shell" and "!" use $SHELL, and running with
SHELL=/usr/bin/bash makes those two [1 and 2] tests pass. 

Do you think it would make sense to handle the ksh88 behaviour in a separate test-suite patch, by accepting $_shell_exitcode = 130 and $_shell_exitsignal = void on AIX??

Otherwise, patches 1 and 2 works on AIX.


Thanks,
Aditya