Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: "Sérgio Durigan Júnior" <sergiodj@linux.vnet.ibm.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 1/4] 'catch syscall' feature -- Architecture-independent 	part
Date: Tue, 04 Nov 2008 17:57:00 -0000	[thread overview]
Message-ID: <m3d4hbpe7s.fsf@fleche.redhat.com> (raw)
In-Reply-To: <1225773079.24532.52.camel@miki> (=?utf-8?Q?=22S=C3=A9rgio?=  Durigan =?utf-8?Q?J=C3=BAnior=22's?= message of "Tue\, 04 Nov 2008  02\:31\:19 -0200")

>>>>> "Sérgio" == Sérgio Durigan Júnior <sergiodj@linux.vnet.ibm.com> writes:

Sérgio> +/* The maximum number of arguments the user can provide to
Sérgio> +   the 'catch syscall' command.  */
Sérgio> +#define MAX_CATCH_SYSCALL_ARGS 10

Do we need a maximum?  GNU style is not to have them.

Sérgio> +    printf_filtered (_("'%s ()'"), syscall_name);

I don't think the '()' is needed here.

Sérgio> +static void
Sérgio> +print_mention_catch_syscall (struct breakpoint *b)
Sérgio> +{
Sérgio> +  if (b->syscall_to_be_caught != CATCHING_ANY_SYSCALL)
Sérgio> +    printf_filtered (_("Catchpoint %d (syscall '%s ()')"),

Same here.

Sérgio> +/* Splits the argument using space as delimiter.
Sérgio> +   Returns the number of args.  */
Sérgio> +static int
Sérgio> +catch_syscall_split_args (char *arg, int *syscalls_numbers)

Sérgio> +      memset ((void *) cur_name, '\0', 128 * sizeof (char));

I don't think this is needed.
Also, sizeof(char)==1 by definition.

Sérgio> +      for (i = 0; out == 0; i++)
Sérgio> +        {
Sérgio> +          c = *arg_p;
Sérgio> +          cur_name[i] = c;
Sérgio> +          if (isspace (c) || c == '\0')
Sérgio> +            {
Sérgio> +              out = 1;
Sérgio> +              cur_name[i] = '\0';

I'd say, remove "out", make it an infinite loop, and use a 'break' in
the exit condition.

Sérgio> +static void
Sérgio> +catch_syscall_command_1 (char *arg, int from_tty, struct cmd_list_element *command)

I think you need a line break before the 'struct' here.

Sérgio> +      for (i = 0; i < nargs; i++)
Sérgio> +        create_syscall_event_catchpoint (tempflag, syscalls_numbers[i],
Sérgio> +                                         &catch_syscall_breakpoint_ops);

This makes a separate catchpoint for each argument to "catch syscall".

I think it would be more useful to make a single catchpoint.  A single
catchpoint gives the user a way to set commands, conditions, etc, for
a whole range of syscalls at once.  It is analogous, I think, to
having a breakpoint with multiple locations.

What do you think of that?

It would mean some changes in the logic and some changes in the data
structure -- but nothing too major.  Usually a catchpoint would have a
small number of syscalls, so I'd say that just using a linked list
would be fine.

Sérgio> +/* Complete syscalls names.  Used by "catch syscall".  */
Sérgio> +char **
Sérgio> +catch_syscall_completer (char *text, char *word)
Sérgio> +{
Sérgio> +  const char **list =
Sérgio> +    gdbarch_get_syscalls_names (current_gdbarch);
Sérgio> +  return (list == NULL) ? NULL : complete_on_enum (list, text, word);
Sérgio> +}

I think you should just put this in breakpoint.c and make it static.
My reasoning is that it is likely that only this one particular
command will need this completion function.

Tom


  parent reply	other threads:[~2008-11-04 17:57 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-04  4:32 Sérgio Durigan Júnior
2008-11-04 16:17 ` Pedro Alves
2008-11-07  3:30   ` Sérgio Durigan Júnior
2008-11-07 12:12     ` Pedro Alves
2008-11-07 13:30       ` Daniel Jacobowitz
2008-11-08 15:35       ` Sérgio Durigan Júnior
2008-11-04 17:57 ` Tom Tromey [this message]
2008-11-04 21:55   ` Thiago Jung Bauermann
2008-11-04 22:33     ` Tom Tromey
2008-11-05 19:05       ` Tom Tromey
2008-11-05 19:13         ` Sérgio Durigan Júnior
2008-11-07  3:41         ` Sérgio Durigan Júnior
2008-11-07  3:39   ` Sérgio Durigan Júnior
2008-11-07 18:21     ` Tom Tromey
2008-11-04 21:13 ` Eli Zaretskii
2008-11-04 22:12   ` Thiago Jung Bauermann
2008-11-04 22:22     ` Eli Zaretskii
2008-11-04 22:35       ` Daniel Jacobowitz
2008-11-05  4:19         ` Eli Zaretskii
2008-11-05 13:34           ` Sérgio Durigan Júnior
2008-11-05 18:42             ` Eli Zaretskii
2008-11-08 19:31             ` Mark Kettenis
2008-11-05 14:55           ` Daniel Jacobowitz
2008-11-05 18:43             ` Eli Zaretskii
2008-11-05 18:59               ` Daniel Jacobowitz
2008-11-05 19:11                 ` Eli Zaretskii
2008-11-06 23:03               ` Mark Kettenis
2008-11-04 22:31     ` Pedro Alves
2008-11-05  4:10       ` Eli Zaretskii
2008-11-05 12:29         ` Pedro Alves
2008-11-05 18:38           ` Eli Zaretskii
2008-11-05 18:57             ` Pedro Alves
2008-11-05 19:10               ` Eli Zaretskii
2008-11-05 19:34                 ` Pedro Alves
2008-11-05 20:36                   ` Eli Zaretskii
2008-11-05 21:10                     ` Pedro Alves
2008-11-06  4:27                       ` Eli Zaretskii
2008-11-06 14:32                         ` Pedro Alves
2008-11-07  9:59                           ` Eli Zaretskii
2008-11-07 10:10                             ` Pedro Alves
2008-11-05 13:32         ` Mark Kettenis
  -- strict thread matches above, loose matches on Subject: below --
2008-09-30 18:12 Sérgio Durigan Júnior
2008-10-02 21:13 ` Joel Brobecker
2008-10-03  2:33   ` Sérgio Durigan Júnior
2008-10-03  6:07     ` Joel Brobecker
2008-10-03 17:52       ` Daniel Jacobowitz
2008-10-04 23:07         ` Sérgio Durigan Júnior
2008-10-04 23:04       ` Sérgio Durigan Júnior
2008-10-06 17:22         ` Joel Brobecker
2008-10-10 13:12           ` Daniel Jacobowitz
2008-10-10 15:28           ` Sérgio Durigan Júnior
2008-10-12  2:26           ` Sérgio Durigan Júnior
2008-10-15  5:40             ` Joel Brobecker
2008-10-16  3:35               ` Sérgio Durigan Júnior
2008-10-16 12:37                 ` Daniel Jacobowitz
2008-10-16 15:17                   ` Daniel Jacobowitz
2008-10-16 16:28                     ` Joel Brobecker

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=m3d4hbpe7s.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=sergiodj@linux.vnet.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