Re: [PATCH] PR threads/10729: x86 hw watchpoints and non-stop mode

Pedro Alves
2011-12-12T11:21:18Z

On Sunday 11 December 2011 20:32:57, Jan Kratochvil wrote:
> On Fri, 09 Dec 2011 17:30:20 +0100, Pedro Alves wrote:
> > On Monday 05 December 2011 20:25:13, Jan Kratochvil wrote:
> > > The patchset
> > > [patch 0/4] hw watchpoints across fork() + multi-inf
> > >
> > > which I am rebasing now on top of HEAD which already reimplements its part by
> > > commit 96fd921972966166fda0eb300bfa4e5479f3b31f
> > > Author: Pedro Alves <pedro@codesourcery.com>
> > > Date: Fri Jul 22 16:58:30 2011 +0000
> > > http://sourceware.org/ml/gdb-patches/2011-07/msg00586.html
> >
> > You mean you were already pulling in this non-stop change from
> > gdbserver? :-(
>
> Last time you stopped that patchset due to referenced merging with gdbserver
> http://sourceware.org/ml/gdb-patches/2010-12/msg00348.html

As seen on that email, the main objections were:

" gdbserver already has a per-process structure for the debug registers,
yet, your implementation is different, which makes it gratuitously harder
to share and move code between the gdb and gdbserver implementations. "

" gdbserver gets away without the iteration over all threads setting the
debug registers synchronously, which merged to native gdb, I think
could get rid of some of the churn in your patches, I think, in addition
to fixing watchpoints in non-stop mode (PR10729). "

The latter is what my patch now brings to gdb. In my mind, I was even
helping get those patches closer to being mainlined...

> which AFAIK Yao Qi was working on but which has not yet happened, so not sure
> how more years it cannot get merged.

The patches I mentioned that would move some shareable bits of
gdb and gdbserver into common/, seeding the way to duplication
removal were Kwok's. They are in now. Note, seeding, not getting
rid of the all the duplication. Yao's common/ work earlier in the year
was a personal effort, AFAIK.

> It was probably my wrong assumption for
> the last year the i386-nat.c merging with gdbserver was being worked on while
> in fact you only mentioned it would be good to do.

Right. There's chances I may be able to help with the effort of merging
target side code between gdb and gdbserver next year, but no promises.
AFAICS, Ulrich has actually been quietly taking the lead, pushing
to gdbserver features currently only native debugging supports.

> > --- a/gdb/mi/mi-main.c
> > +++ b/gdb/mi/mi-main.c
> > @@ -1743,12 +1743,11 @@ mi_cmd_list_target_features (char *command, char **argv, int argc)
> > struct cleanup *cleanup = NULL;
> > struct ui_out *uiout = current_uiout;
> >
> > - cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features");
> > + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features");
> > if (target_can_async_p ())
> > ui_out_field_string (uiout, NULL, "async");
> > if (target_can_execute_reverse)
> > ui_out_field_string (uiout, NULL, "reverse");
> > -
> > do_cleanups (cleanup);
> > return;
> > }
>
> Unrelated whitespace cleanup only. Not present in the ChangeLog.

Whoops. Not supposed to be there. Thanks.

--
Pedro Alves