This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: duplicated code in gdb and gdbserver


On Fri, Jan 7, 2011 at 7:23 AM, Yao Qi <yao@codesourcery.com> wrote:
> I noticed that sharing code of GDB and GDBServer is discussed in 2010
> GCC Summit.
> http://sourceware.org/gdb/wiki/2010_GCC_Summit_BoF
>
> Looks like one conclusion is that "it is likely to be quite complex". ?I
> don't understand this point fully, so I had a try by myself to create a
> new file linux-common.h in gdb/common/, move some duplicated macro
> definitions from gdb/linux-nat.c and gdb/gdbserver/linux-low.c to
> common/linux-common.h, and adjust *.h files include order. ?Then, both
> GDB and GDBServer can be build on x86. ?Totally, it costs me nearly half
> an hour to complete this experiment.
>
> Could anyone tell me which part of this work is "quite complex"? ?Am I
> missing something?
> Regardless of this potential complexity I haven't met, it is worthwhile
> moving obviously common/duplicated code into single file, isn't?
> Comments are welcome.

Complexity is in the eye of the beholder, so I'm sure there can be
reasonable disagreements.
There are no technical problems to solve, it's just code
reorganization (albeit on a non-trivial scale).
But for discussion's sake you need to dig deeper (IMO).

An easy example is tracepoints.  Why does tracepoint support only
exist on gdbserver?  There's no technical reason for that.
The end result (of more code sharing) should include tracepoint
support being available to both native gdb and gdbserver.

Another is the management of threads, gdb and gdbserver handle them a
little differently.

Another example is individual target support.  E.g., merging common
bits of gdb's ${target}-nat.c files with gdbserver's ${target}-low.c
files.

A minor example is regcache.c.
And so on.

But for what it's worth, it's REAL NICE that the gdb community is at
least not balking at the idea!

What I'd like to see (repeated here for the list's sake, with
apologies to the irc crowd :-)), is a publicly usable library (or
collection of libraries) used by gdb and gdbserver.  [I'd like to see
more of the gnu tools made available as libraries, btw.]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]