From: Andrew Cagney <cagney@gnu.org>
To: Stan Shebs <stanshebs@earthlink.net>
Cc: Paul Koning <Paul_Koning@dell.com>,
mark.kettenis@xs4all.nl, gdb@sourceware.org
Subject: Re: Move GDB to C++ ?
Date: Fri, 11 Jul 2008 12:40:00 -0000 [thread overview]
Message-ID: <48775496.7030203@gnu.org> (raw)
In-Reply-To: <48767F78.8060806@earthlink.net>
Stan Shebs wrote:
> Andrew Cagney wrote:
>> The one question I would pose though, is bashing up the current GDB
>> code base until it compiles with C++ a reasonable approach? Each
>> time C++ has been suggested previously, that has been the proposed
>> path forward, and each time it has not moved (I've even tried it my
>> self). Perhaps, instead, we should approach this more on a component
>> basis - stack, expr, type, proc, debug-info, ..., and convert each
>> chunk in turn. And also make use of newer technology such as some of
>> the technology that accompanied GOLD. This would suggest working in
>> parallel, in a src/gdbxx (gdb++) directory; while this is of course
>> longer and harder, I believe we'll see better results.
> It's certainly an approach worth thinking about. Presumably the point
> of working in a different directory is that the code might be expected
> to be broken or nonportable for a period of time, but when that
> happens you can run afoul of limited commitment levels, with people
> only able to work on gdbxx when they don't have regular gdb tasks. If
> everyone is forced into the same straitj^Wsource tree, dealing with
> mid-transition brokenness is (usually :-) ) justifiable as part of the
> job.
I don't think it is reasonable to allow mod-transition brokenness, a
code base, allowing for the usual fubars, should always build and pass
its testsuite.
>
> An intermediate strategy might be to enable C++ in the trunk, then do
> component replacement on branches. GCC has been having some success
> with this; if a branch has something like rewritten symbol handling,
> then regular merges will go pretty quickly, and people that don't want
> to deal with symbol stuff can continue to work on trunk, knowing that
> the branch code will come in when it's ready.
>
While I agree that this looks reasonable, I've reservations as to its
apparent simplicity. Lets consider a moment GDB's vs GCC's
architectures (the high level view):
-> a compiler such as GCC has a pipeline architecture: each pass or
filter implementing a specific algorithm and working in relative
isolation; communication with the next pass being through simple (ok in
theory :-) and tight interfaces. (There are exceptions such as the
symbol table of course :-) For instance the front-end churns out GIMPLE,
while the back-end continues to be fed RTL. A filter, the bulk of its
code being an algorithm, can be re-implemented in C++ without modifying
the interfaces it uses; and a structure can be changed to C++ while
retaining compatible C/MACRO interfaces.
-> a debugger such as gdb has an object-oriented architecture: there are
a number of objects and relationships that reflect the system it is
modelling. For instance, a stack has-a frame, a variable has-a
location|type, and so on. When talking about changing GDB to C++ we're
in fact talking about changing the implementation of each of these
objects from a struct/union to a classes. I would consider that a far
more invasive change.
As a way of getting a better feel for this, lets consider two previous
structural efforts: the unwinder and the architecture vector. I mention
them as they are obvious first candidates for switching to C++. For
each project the work was largely implemented incrementally in the
mainline, consequently I would suggest, each project also took, not
weeks or months, but years of effort. I suspect that, when we're
talking about that sort of time scale for an incremental approach, it
too runs the risk of limited commitment levels, and GDB finding itself
in a C vs C++ no-where land.
If only life were simple.
-
next prev parent reply other threads:[~2008-07-11 12:40 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-10 18:46 Stan Shebs
2008-07-10 19:01 ` Mark Kettenis
2008-07-10 20:01 ` Stan Shebs
2008-07-10 20:04 ` Paul Koning
2008-07-10 20:40 ` Andrew Cagney
2008-07-10 21:31 ` Stan Shebs
2008-07-10 22:30 ` Nick Roberts
2008-07-10 23:49 ` Stan Shebs
2008-07-11 6:14 ` Vladimir Prus
2008-07-11 12:40 ` Andrew Cagney [this message]
2008-07-11 12:23 ` Robert Dewar
2008-07-11 16:03 ` Dave Korn
2008-07-10 21:54 ` Mark Kettenis
2008-07-11 6:26 ` Joel Brobecker
2008-07-11 8:55 ` Vladimir Prus
2008-07-11 9:23 ` Andreas Schwab
2008-07-11 9:32 ` Vladimir Prus
2008-07-11 14:27 ` Andrew Cagney
2008-07-11 14:34 ` Daniel Jacobowitz
2008-07-11 14:54 ` Paul Koning
2008-07-11 15:30 ` Pedro Alves
2008-07-11 16:09 ` Dave Korn
2008-07-11 16:26 ` Daniel Jacobowitz
2008-07-12 5:41 ` Robert Dewar
2008-07-29 17:29 ` Andrew Cagney
2008-07-29 18:08 ` Vladimir Prus
2008-07-29 18:09 ` Thiago Jung Bauermann
2008-07-29 19:05 ` Andrew Cagney
2008-07-29 19:06 ` Thiago Jung Bauermann
2008-07-29 19:35 ` Thiago Jung Bauermann
2008-07-30 7:18 ` Vladimir Prus
2008-07-30 12:11 ` André Pönitz
2008-07-30 12:35 ` Mark Kettenis
2008-07-30 15:39 ` André Pönitz
2008-07-30 17:52 ` Eli Zaretskii
2008-07-30 17:47 ` Eli Zaretskii
2008-07-29 19:32 ` Eli Zaretskii
2008-07-29 19:45 ` Stan Shebs
2008-07-30 18:18 ` Eli Zaretskii
2008-07-30 19:05 ` Stan Shebs
2008-07-30 19:15 ` Eli Zaretskii
2008-07-30 19:42 ` Stan Shebs
2008-07-31 15:37 ` Andrew Cagney
2008-07-30 19:30 ` Andrew Cagney
2008-07-30 19:56 ` Mark Kettenis
2008-07-31 9:03 ` André Pönitz
2008-07-31 9:33 ` Alpár Jüttner
2008-07-31 10:07 ` Alpár Jüttner
2008-07-30 5:24 ` Tom Tromey
2008-07-30 18:30 ` Eli Zaretskii
2008-07-30 20:29 ` David Carlton
2008-07-30 20:30 ` Eli Zaretskii
2008-07-30 20:38 ` Eli Zaretskii
2008-07-31 4:52 ` Michael Veksler
2008-07-31 20:03 ` Ian Lance Taylor
2008-07-30 9:25 ` Vladimir Prus
2008-07-30 11:55 ` Salvatore Lionetti
2008-07-30 18:45 ` Eli Zaretskii
2008-07-30 19:19 ` Stan Shebs
2008-07-29 23:59 ` Mark Kettenis
2008-07-10 19:35 ` Jan Kratochvil
2008-07-10 22:41 ` Tom Tromey
2008-07-11 9:57 ` Andrew STUBBS
2008-07-11 11:44 ` Daniel Jacobowitz
2008-07-11 12:43 ` Pierre Muller
2008-07-11 13:14 ` Andrew Cagney
2008-07-13 23:18 ` Tom Tromey
2008-07-14 0:15 ` Nick Roberts
2008-07-14 8:49 ` Vladimir Prus
2008-07-14 13:21 ` Robert Dewar
2008-07-14 15:54 ` Vladimir Prus
2008-07-14 15:58 ` Robert Dewar
2008-07-14 16:03 ` Robert Dewar
2008-07-14 16:23 ` Vladimir Prus
2008-07-14 16:39 ` Robert Dewar
2008-07-14 17:53 ` Vladimir Prus
2008-07-16 19:06 ` Thiago Jung Bauermann
2008-07-14 17:54 ` Mark Kettenis
2008-07-14 16:12 ` Daniel Jacobowitz
2008-07-14 16:15 ` Robert Dewar
2008-07-14 16:18 ` Robert Dewar
2008-07-14 16:21 ` Bob Rossi
2008-07-14 16:31 ` Vladimir Prus
2008-07-14 19:00 ` Tom Tromey
2008-07-12 3:30 ` Michael Snyder
2008-07-14 14:54 ` Andrew Cagney
2008-07-20 14:36 ` Michael Eager
2008-07-31 8:40 ` Vladimir Prus
2008-07-31 14:37 ` Alpár Jüttner
2008-07-31 22:30 ` GDB to C++ issue: deletion Paul Hilfinger
2008-07-31 22:40 ` Daniel Jacobowitz
2008-07-31 22:58 ` Paul Hilfinger
2008-07-31 23:25 ` Daniel Jacobowitz
2008-08-01 5:38 ` Ian Lance Taylor
2008-08-01 8:52 ` André Pönitz
2008-08-01 9:53 ` Eli Zaretskii
2008-08-01 12:57 ` Daniel Jacobowitz
2008-08-01 14:57 ` Paul Koning
2008-08-01 15:31 ` Eli Zaretskii
2008-08-01 13:51 ` André Pönitz
[not found] ` <20080801125124.GA13594@caradoc.them.org>
[not found] ` <uzlnwn9jq.fsf@gnu.org>
2008-08-01 13:59 ` Daniel Jacobowitz
2008-08-01 15:17 ` Eli Zaretskii
2008-08-01 15:29 ` Daniel Jacobowitz
2008-08-01 15:38 ` Eli Zaretskii
2008-08-12 14:40 ` Problem with can_use_hw_breakpoint Jeremy Bennett
2008-08-12 14:51 ` Eli Zaretskii
2008-08-12 14:56 ` Jeremy Bennett
2008-07-31 20:00 ` Move GDB to C++ ? Eli Zaretskii
2008-08-01 13:13 ` Daniel Jacobowitz
2008-08-01 13:47 ` Eli Zaretskii
2008-08-01 14:04 ` André Pönitz
2008-08-01 15:20 ` Eli Zaretskii
2008-08-04 9:34 ` André Pönitz
2008-08-01 14:21 ` Daniel Jacobowitz
2008-08-01 15:23 ` Eli Zaretskii
2008-08-01 16:14 ` Vladimir Prus
2008-08-01 19:20 ` Eli Zaretskii
2008-08-02 5:55 ` Vladimir Prus
2008-08-02 8:07 ` Eli Zaretskii
2008-08-02 9:22 ` Vladimir Prus
2008-08-02 9:47 ` Eli Zaretskii
2008-08-02 10:00 ` Vladimir Prus
2008-08-02 10:16 ` Eli Zaretskii
2008-08-01 13:55 ` Mark Kettenis
2008-08-01 14:11 ` André Pönitz
2008-08-01 15:02 ` Stan Shebs
2008-08-01 15:05 ` Vladimir Prus
2008-08-01 15:17 ` Daniel Jacobowitz
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=48775496.7030203@gnu.org \
--to=cagney@gnu.org \
--cc=Paul_Koning@dell.com \
--cc=gdb@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
--cc=stanshebs@earthlink.net \
/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