Mirror of the gdb mailing list
 help / color / mirror / Atom feed
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.

-


  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