From: Andrew Cagney <cagney@gnu.org>
To: Stan Shebs <stanshebs@earthlink.net>
Cc: Eli Zaretskii <eliz@gnu.org>, gdb@sources.redhat.com
Subject: Re: Move GDB to C++ ?
Date: Thu, 31 Jul 2008 15:37:00 -0000 [thread overview]
Message-ID: <4891CE20.8040308@gnu.org> (raw)
In-Reply-To: <4890C127.80404@earthlink.net>
Stan Shebs wrote:
>
>>
>>
> How can I do that meaningfully? It depends on how everything else is
> to be designed. I'm a little surprised that you don't see it yourself,
> actually.
I think Eli's point is reasonable, we need good reason to change the
code; multi-arch, for instance, was motivated by the desire to support
multiple architectures within a single GDB. Below are two candidates
for change; In each case they provide design suggestions that, I
believe, are more easily expressed using an O-O paradime, and let us
address specific limitations in the current GDB code
value has-a location has-a-multiple pieces
http://sourceware.org/ml/gdb/2008-07/msg00302.html
By breaking up value so that it's location consists of multiple pieces
we're able to handle the modification of variables who's value is split
between registers, or between registers and memory. I think this
provides an example of where we can ignore the language and focus on the
proposed design change, deciding if it stands up on its merits. A C++
implementation, while perhaps more straight forward, isn't a predicate
to the work.
virtual stack vs physical stack
http://sourceware.org/ml/gdb/2008-07/msg00191.html
This offers both an alternative to Daniel's current inline back-trace
code; and a way potential way forward for us to handle more complex
unwinding such as can occure in an OpenMP program where the user's
stack appears to straddle multiple threads. This design is more
powerful in that it applies the decorator pattern; something that may be
technically challenging in C.
For each case, especially the second, is this more straight forward in
an O-O language, even C++.
>>> And sure, the same things could be constructed manually in C, but
>>> then you're using piles of macro trickery a la vec.h
>>>
>>
>> Are we still talking about ALL_OBJFILES, or about something more
>> broad? ALL_OBJFILES is just a loop:
>>
>> #define ALL_OBJFILES(obj) \
>> for ((obj) = object_files; (obj) != NULL; (obj) = (obj)->next)
>>
> It's the the "and friends" part that is problematic, there are a dozen
> variants at least, and the potential for doubling that number with
> multiple execs, because sometimes you still want to iterate through
> all indiscriminately, other times through only the objfiles for a
> particular program. There is even a note in objfiles.h about the
> hazards of the basic "pointer to next" approach, which was the very
> height of C fashion twenty years ago, but is actually a chronic source
> of bugs and memory leaks.
>
I'd read this more as an argument in favour of a managed runtime
environment that included features such as garbage collection.
You're right that we need to re-think the way we allocate and manage
memory for debug-info; determining a new global strategy for its
management. Once we've figured that out we can look forward to
implementing it, and we may in deed find that the mechanisms provided by
C++ aid in local aspects of the global strategy (we might also find that
the complexity of C++'s features actually obscure the problem :-). The
thing to recognize is that C++ is a tool here, not a silver bullet.
next prev parent reply other threads:[~2008-07-31 14:37 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
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 [this message]
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=4891CE20.8040308@gnu.org \
--to=cagney@gnu.org \
--cc=eliz@gnu.org \
--cc=gdb@sources.redhat.com \
--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