This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC 1/3] catch syscall -- try 6 -- Source-code modifications
> From: Sérgio_Durigan_Júnior <sergiodj@linux.vnet.ibm.com>
> Date: Fri, 11 Sep 2009 21:27:41 -0300
> Cc: gdb-patches@sourceware.org
>
> On Friday 11 September 2009, Eli Zaretskii wrote:
> > I have one more small request:
> > > + /* Check if the user provided a syscall name or a number. */
> > > + syscall_number = (int) strtol (cur_name, &endptr, 10);
> >
> > This forces the user to specify the system call numbers in decimal.
> > However, sometimes it might be more convenient to use hex. For
> > example, I'm planning to add support for this to the DJGPP port, where
> > the various software interrupts and their functions are known to
> > people by their hex numbers, e.g. Interrupt 0x21 function 0x2a is the
> > DOS system call to get the system clock date. Asking the users to
> > translate those into decimal would be a nuisance.
> >
> > So can we use zero instead of 10 for the last argument of this call to
> > strtol?
>
> Sure, I should have used zero since the start. Sorry about that, it's fixed
> (and tested) now.
>
> > Finally, a minor nit:
> > > + while (*arg != '\0')
> > > + {
> > > + int i, syscall_number;
> > > + char *endptr;
> > > + char cur_name[128];
> > > + struct syscall s;
> > > +
> > > + /* Skip whitespace. */
> > > + while (isspace (*arg))
> > > + arg++;
> > > +
> > > + for (i = 0; arg[i] && !isspace (arg[i]); ++i)
> > > + cur_name[i] = arg[i];
> > > + cur_name[i] = '\0';
> > > + arg += i;
> >
> > The last loop does not take care not to overrun the 128-character
> > limit that cur_name[] imposes on the length of syscall names, and will
> > happily smash the stack if GDB is fed a very long string.
>
> Ops, sorry about that too :-)... Thank you for pointing this nit, I've fixed
> it too (and tested, of course).
Thanks, I am happy now.
> What about the patch now? Ok to check in?
I think everybody approved it, right? How about waiting one more day
and then checking it in?