[4/4] Update documentation on catching a group of related syscalls.
Commit Message
Eli Zaretskii <eliz@gnu.org> writes:
> Yes, saying that TAB-completion (including M-TAB) can be used to see
> the list of groups is fine with me.
Here goes a new version of this part.
What about the other parts, are they good to go? :)
Thanks!
gdb/
* breakpoint.c (_initialize_breakpoint): Update catch syscall
command documentation.
* NEWS: Include section about catching groups of syscalls.
gdb/doc/
* gdb.texinfo (Set Catchpoints): Add 'group' argument to catch
syscall.
Comments
> From: Gabriel Krisman Bertazi <gabriel@krisman.be>
> Cc: gdb-patches@sourceware.org
> Date: Fri, 14 Nov 2014 16:52:42 -0200
>
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -16736,11 +16736,11 @@ If REGEX is given, only stop for libraries matching the regular expression."),
> CATCH_PERMANENT,
> CATCH_TEMPORARY);
> add_catch_command ("syscall", _("\
> -Catch system calls by their names and/or numbers.\n\
> -Arguments say which system calls to catch. If no arguments\n\
> -are given, every system call will be caught.\n\
> -Arguments, if given, should be one or more system call names\n\
> -(if your system supports that), or system call numbers."),
> +Catch system calls by their names, groups and/or numbers. Arguments\n\
> +say which system calls to catch. If no arguments are given, every\n\
> +system call will be caught. Arguments, if given, should be one or\n\
> +more system call names (if your system supports that), system call\n\
> +groups or system call numbers."),
The first line of the doc string must be a single complete sentence
terminated by a period. That's because some help-related commands
stop displaying at the first period.
Otherwise, these patches are OK.
Thanks.
@@ -60,6 +60,11 @@ SGI Irix-6.x mips-*-irix6*
VAX running (4.2 - 4.3 Reno) BSD vax-*-bsd*
VAX running Ultrix vax-*-ultrix*
+* The "catch syscall" command catches groups of related syscalls.
+
+ The "catch syscall" command now supports catching a group of related
+ syscalls using the 'group:' or 'g:' prefix.
+
*** Changes in GDB 7.8
* New command line options
@@ -16736,11 +16736,11 @@ If REGEX is given, only stop for libraries matching the regular expression."),
CATCH_PERMANENT,
CATCH_TEMPORARY);
add_catch_command ("syscall", _("\
-Catch system calls by their names and/or numbers.\n\
-Arguments say which system calls to catch. If no arguments\n\
-are given, every system call will be caught.\n\
-Arguments, if given, should be one or more system call names\n\
-(if your system supports that), or system call numbers."),
+Catch system calls by their names, groups and/or numbers. Arguments\n\
+say which system calls to catch. If no arguments are given, every\n\
+system call will be caught. Arguments, if given, should be one or\n\
+more system call names (if your system supports that), system call\n\
+groups or system call numbers."),
catch_syscall_command_1,
catch_syscall_completer,
CATCH_PERMANENT,
@@ -4254,7 +4254,7 @@ A call to @code{exec}. This is currently only available for HP-UX
and @sc{gnu}/Linux.
@item syscall
-@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
+@itemx syscall @r{[}@var{name} @r{|} @var{number} @r{|} @r{group:}@var{groupname} @r{|} @r{g:}@var{groupname}@r{]} @dots{}
@kindex catch syscall
@cindex break on a system call.
A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
@@ -4289,6 +4289,15 @@ may be useful if @value{GDBN}'s database does not have the complete
list of syscalls on your system (e.g., because @value{GDBN} lags
behind the OS upgrades).
+You may specify a group of related syscalls to be caught at once using
+the @code{group:} syntax (@code{g:} is a shorter equivalent.). For
+instance, on some platforms @value{GDBN} allows you to catch all
+network related syscalls, by passing the argument @code{group:network}
+to @code{catch syscall}. Note that not all syscall groups are
+available in every system. You can use the command completion
+facilities (@pxref{Completion,, command completion}) to list the
+syscall groups available on your environment.
+
The example below illustrates how this command works if you don't provide
arguments to it:
@@ -4345,6 +4354,23 @@ Program exited normally.
(@value{GDBP})
@end smallexample
+Here is an example of catching a syscall group:
+
+@smallexample
+(@value{GDBP}) catch syscall group:process
+Catchpoint 1 (syscalls 'exit' [1] 'fork' [2] 'waitpid' [7]
+'execve' [11] 'wait4' [114] 'clone' [120] 'vfork' [190]
+'exit_group' [252] 'waitid' [284] 'unshare' [310])
+(@value{GDBP}) r
+Starting program: /tmp/catch-syscall
+
+Catchpoint 1 (call to syscall fork), 0x00007ffff7df4e27 in open64 ()
+ from /lib64/ld-linux-x86-64.so.2
+
+(@value{GDBP}) c
+Continuing.
+@end smallexample
+
However, there can be situations when there is no corresponding name
in XML file for that syscall number. In this case, @value{GDBN} prints
a warning message saying that it was not able to find the syscall name,