This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v3 03/17] Add tests for catching groups of syscalls on supported architectures.
- From: Sergio Durigan Junior <sergiodj at redhat dot com>
- To: Gabriel Krisman Bertazi <gabriel at krisman dot be>
- Cc: gdb-patches at sourceware dot org, dje at google dot com
- Date: Sun, 26 Apr 2015 14:44:37 -0400
- Subject: Re: [PATCH v3 03/17] Add tests for catching groups of syscalls on supported architectures.
- Authentication-results: sourceware.org; auth=none
- References: <1430011521-24340-1-git-send-email-gabriel at krisman dot be> <1430011521-24340-4-git-send-email-gabriel at krisman dot be>
On Saturday, April 25 2015, Gabriel Krisman Bertazi wrote:
> gdb/testsuite/
>
> * gdb.base/catch-syscall.exp (do_syscall_tests): Add call
> to test_catch_syscall_group.
> (test_catch_syscall_group): New.
Hey,
Thanks for this third version. I think we're almost there :-).
> ---
> gdb/testsuite/gdb.base/catch-syscall.exp | 37 ++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp
> index df0004a..c65c8e3 100644
> --- a/gdb/testsuite/gdb.base/catch-syscall.exp
> +++ b/gdb/testsuite/gdb.base/catch-syscall.exp
> @@ -269,6 +269,40 @@ proc test_catch_syscall_fail_nodatadir {} {
> }
> }
>
> +proc test_catch_syscall_group {} {
> + global decimal
> +
> + set sysnum "\\\[${decimal}\\\]"
> +
> + gdb_test "catch syscall g:process" \
> + "Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*" \
> + "set catchpoint on a group of syscalls"
> +
> + gdb_test "catch syscall group:process read" \
> + "Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*read.*\\)" \
> + "set catchpoints on a group of syscalls and on a single syscall"
> +
> + gdb_test "catch syscall group:" \
> + "Unknown syscall group.*" \
> + "set catchpoints on an invalid group"
You should use a full-anchored regex here. You know exactly what to
expect from the command, so match it literally.
> +
> + gdb_test "catch syscall g:junk" \
> + "Unknown syscall group.*" \
> + "set catchpoints on an unknown group."
Same here.
> +
> + gdb_test "complete catch syscall g:proc" \
> + "catch syscall g:process" \
> + "complete catch syscall group with 'g:' prefix"
> +
> + gdb_test "complete catch syscall group:proc" \
> + "catch syscall group:process" \
> + "complete catch syscall group with 'group:' prefix"
> +
> + gdb_test "complete catch syscall g" \
> + ".*group:process.*" \
> + "complete catch syscall group suggests 'group:' prefix"
What you can do here, assuming that all targets have the same groups, is
to use gdb_test_sequence and match all the "catch syscall group:XYZ"
entries. Maybe that is too strict (it assumes that future targets will
also have to implement the exact same groups), but I think it is OK
doing that now and adjusting this in the future if we need.
> +}
> +
> proc do_syscall_tests {} {
> # NOTE: We don't have to point gdb at the correct data-directory.
> # For the build tree that is handled by INTERNAL_GDBFLAGS.
> @@ -309,6 +343,9 @@ proc do_syscall_tests {} {
> # Testing if the 'catch syscall' command works when switching to
> # different architectures on-the-fly (PR gdb/10737).
> if [runto_main] then { test_catch_syscall_multi_arch }
> +
> + # Testing the 'catch' syscall command for a group of syscalls.
> + if [runto_main] then { test_catch_syscall_group }
> }
>
> proc test_catch_syscall_without_args_noxml {} {
> --
> 1.9.3
Other than that, this part is OK, but I am not a global maintainer to
approve.
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/