Re: further improve "handle" help string

Pedro Alves
2012-08-23T17:38:15Z

On 08/23/2012 06:18 PM, Mike Frysinger wrote:
> On Thursday 23 August 2012 12:26:32 Pedro Alves wrote:
>> Multiple signals may be specified. Signal numbers and signal names
>> may be interspersed with actions, with the actions being performed for
>> all signals cumulatively specified.
>
> this doesn't accurately describe real world behavior (but maybe that's a
> bug?). this is why i avoided that aspect in the first place :(.

> for example:
> (gdb) handle SIGHUP SIGUSR1 SIGUSR2 SIGPWR
> Signal Stop Print Pass to program Description
> SIGHUP Yes Yes Yes Hangup
> SIGUSR1 Yes Yes Yes User defined signal 1
> SIGUSR2 Yes Yes Yes User defined signal 2
> SIGPWR Yes Yes Yes Power fail/restart
> (gdb) handle SIGHUP SIGUSR1 SIGUSR2 nostop SIGPWR
> Signal Stop Print Pass to program Description
> SIGHUP No Yes Yes Hangup
> SIGUSR1 No Yes Yes User defined signal 1
> SIGUSR2 No Yes Yes User defined signal 2
> SIGPWR Yes Yes Yes Power fail/restart
> (gdb) handle SIGPWR
> Signal Stop Print Pass to program Description
> SIGPWR Yes Yes Yes Power fail/restart
> (gdb) handle SIGHUP SIGUSR1 SIGUSR2 SIGPWR nostop
> Signal Stop Print Pass to program Description
> SIGHUP No Yes Yes Hangup
> SIGUSR1 No Yes Yes User defined signal 1
> SIGUSR2 No Yes Yes User defined signal 2
> SIGPWR No Yes Yes Power fail/restart
>
> so saying "all signals cumulatively" is not how the code is behaving.

I had interpreted "cumulatively" as what the code is doing. As in,
"all signals specified so far, when the action is parsed". That's what
we see above. Another e.g.,

(gdb) handle SIGHUP SIGUSR1 noprint SIGUSR2 SIGPWR nopass
Signal Stop Print Pass to program Description
SIGHUP No No No Hangup
SIGUSR1 No No No User defined signal 1
SIGUSR2 Yes Yes No User defined signal 2
SIGPWR Yes Yes No Power fail/restart

IOW, I interpreted it as "noprint" (implies nostop) applying to all signals
accumulated that far (SIGHUP, SIGUSR1), and then "nopass" applying to
all accumulated signals at the end (all 4).

Consequently, this:

(gdb) handle SIGHUP SIGUSR1 pass SIGUSR2 SIGPWR nopass

Sets all signals to "nopass".

I don't frequently intersperse. Rather, I do things like:

handle SIGTRAP SIG34 SIG35 pass nostop noprint

I have already applied the patch, but if we want to change the
behavior, or the text, that's fine with me.

--
Pedro Alves