public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: Pedro Alves <palves@redhat.com>
Cc: Jan Kratochvil <jan.kratochvil@redhat.com>, gdb@sourceware.org
Subject: Re: Will therefore GDB utilize C++ or not?
Date: Wed, 18 Apr 2012 20:11:00 -0000	[thread overview]
Message-ID: <87d374pzqt.fsf@fleche.redhat.com> (raw)
In-Reply-To: <4F832D5B.9030308@redhat.com> (Pedro Alves's message of "Mon, 09	Apr 2012 19:41:31 +0100")

>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:

Pedro> If you asked me not too long ago, I'd have been strongly in favor
Pedro> of C++.  However, that is no longer the case.  I'm now pending
Pedro> towards "no C++".

First, let me say, thanks for your considered opinion.

I'm sorry it has taken me so long to reply, but various personal events
have made it hard to do so in a more timely way.  Luckily (?) the thread
rages on, so I don't feel too awfully tardy.

Pedro> Indeed, gdbserver would need to remain pure C, and likewise any
Pedro> code shared between gdbserver and gdb should have to be kept
Pedro> as such.  This is important, because we want gdbserver to be usable
Pedro> in #1, resource constrained scenarios where the C++ dependency would
Pedro> be unacceptable.

I found this post to be sensible and I basically agreed with everything
you said -- I'm sort of dog-like and easily swayed by the last thing I
saw -- but on reflection I think the above paragraph is the crux of the
argument, and I am not sure I agree with it.

I think this relies on the idea that the C++ runtime dependency is
unavoidably very heavy.  And, in earlier discussions on the Archer list,
I agreed with this idea without giving it too much thought.

But, that seems to me to be an empirical question.  We could measure the
impact.

This would mean having some criteria for what is acceptable.  I think
that would probably be a good thing to have.  It seems weird that the
current status is that code goes into gdbserver without any sort of
measurement impact -- if resources are an issue, then they should be an
issue generally, not just due to the specter of C++.

Pedro> (On a sidenote: I get the impression from some that C++ would be mostly
Pedro> useful for the stronger static typing, but I can't help finding it in
Pedro> contrast with the simultaneous push of some of GDB functionality towards
Pedro> being implemented in python, with duck typing and all, which people
Pedro> are happy with.

The two programming environments are very different, though; and the
core-versus-extension difference is essential.  One thing I like about
scripting gdb in Python is that I can write quickly -- but also that I
can write lower-quality code without caring about it.

Pedro> One (uninvestigated) idea I had was to take a look at Linux's
Pedro> sparse tool for catching issues like the "offsets" case that led
Pedro> to this thread.)

For the offsets case it might have worked; but in many interesting cases
static analysis (and thus modification) of gdb is just crazily hard,
because gdb is written in such a weird way.  E.g., read the Coverity
reports sometime -- tons and tons of false reports due to cleanups.
Cleanups are hard to even check when you write a tool specifically for
checking them (I did this...).  They are also what will make it very
difficult for us to use the Python refcount checker (we probably just
won't).

Pedro> There's also the issue with in-process code, which is also
Pedro> desirable to remain as C code.  Latest developments push towards
Pedro> having debugger code run _within_ the inferior.  Witness
Pedro> gdbserver's current IPA (in-process agent; libinproctrace.so),
Pedro> which has a lot of coupling in its implementation (and a lot of
Pedro> code shared), and a bunch of code shared with gdbserver.  We
Pedro> can't predict which bits of GDB will we want to be able to reuse
Pedro> in GDBserver or an IPA, but I do believe that we will be
Pedro> considering it (reuse something more) the future.

It seems to me that we must have a licensing issue here.
Can it really be ok to map GPL'd code into any old process?

It seems mildly absurd to me to couple the implementation language
choice of a large, complicated, interactive host-side tool like gdb to
that of an in-process debug agent.

Tom

  parent reply	other threads:[~2012-04-18 20:11 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-30 16:14 Jan Kratochvil
2012-04-04 20:48 ` Tom Tromey
2012-04-04 21:55   ` Mark Kettenis
2012-04-05  3:31     ` Sergio Durigan Junior
2012-04-05 11:46     ` Phil Muldoon
2012-04-06  0:35       ` Will therefore GDB utilize C++? Not John Gilmore
2012-04-06  1:35         ` Russell Shaw
2012-04-06 13:16           ` Joel Brobecker
2012-04-06 14:43             ` Russell Shaw
2012-04-06 15:34             ` Michael Eager
2012-04-06 23:32             ` John Gilmore
2012-04-07  1:04               ` Robert Dewar
2012-04-07  1:52                 ` Thomas Dineen
2012-04-07 16:54               ` Michael Eager
2012-04-09 23:59               ` Stan Shebs
2012-04-05  0:22   ` Will therefore GDB utilize C++ or not? asmwarrior
2012-04-09 18:41   ` Pedro Alves
2012-04-09 19:05     ` Jan Kratochvil
2012-04-09 19:49       ` Pedro Alves
2012-04-09 20:15         ` Paul Smith
2012-04-12 20:06         ` Daniel Jacobowitz
2012-04-12 21:28           ` Paul_Koning
2012-04-13  0:04           ` Doug Evans
2012-04-18 14:10             ` Pedro Alves
2012-04-18 20:27             ` Tom Tromey
2012-04-18 14:08           ` Pedro Alves
2012-04-21 17:24             ` Daniel Jacobowitz
2012-04-16  6:55         ` Jan Kratochvil
2012-04-18 14:11           ` Pedro Alves
2012-04-18 15:16             ` Jan Kratochvil
2012-04-18 15:28               ` Pedro Alves
2012-04-18 15:54                 ` Jan Kratochvil
2012-04-18 16:01                   ` Pedro Alves
2012-04-18 16:07                   ` Joel Brobecker
2012-04-18 16:13                     ` Jan Kratochvil
2012-04-18 16:23                       ` Joel Brobecker
2012-04-18 16:31                         ` Joel Sherrill
2012-04-18 16:50                           ` Pedro Alves
2012-04-18 16:57                             ` Joel Brobecker
2012-04-18 17:28                               ` Joel Sherrill
2012-04-18 17:40                               ` Paul_Koning
2012-04-18 20:37                                 ` Frank Ch. Eigler
2012-04-18 20:38                                   ` Paul_Koning
2012-04-18 20:36                     ` Tom Tromey
2012-04-18 17:48                   ` John Gilmore
2012-04-18 19:07                     ` Tom Tromey
2012-04-18 23:10                       ` John Gilmore
2012-05-18 18:36                         ` Tom Tromey
2012-05-18 18:47                           ` Paul_Koning
2012-05-18 19:36                             ` Tom Tromey
2012-05-18 19:44                               ` Paul_Koning
2012-05-18 20:07                                 ` Tom Tromey
2012-05-18 20:41                                   ` Aurelian Melinte
2012-05-18 18:51                         ` Lazy CU expansion (Was: Will therefore GDB utilize C++ or not?) Tom Tromey
2012-04-18 20:34                   ` Will therefore GDB utilize C++ or not? Tom Tromey
2012-04-18 19:18               ` Will C++ proponents spend 20 minutes to try what they're proposing? John Gilmore
2012-04-18 19:23                 ` Jan Kratochvil
2012-04-18 20:40                 ` Tom Tromey
2012-04-18 20:56                   ` Mike Frysinger
2012-04-18 20:31           ` Will therefore GDB utilize C++ or not? Tom Tromey
2012-04-18 20:25         ` Tom Tromey
2012-05-21 18:11           ` Pedro Alves
2012-05-21 18:36             ` Jan Kratochvil
2012-11-21 20:18             ` Jan Kratochvil
2012-04-10  0:23     ` Yao Qi
2012-04-10  9:47       ` Yao Qi
2012-04-18 20:11     ` Tom Tromey [this message]
2012-04-18 20:31       ` Can it really be ok to map GPL'd code into any old process? John Gilmore
2012-04-18 20:36         ` Pedro Alves
2012-04-23 18:03       ` Will therefore GDB utilize C++ or not? Tom Tromey
2012-05-18 19:55     ` Tom Tromey
2012-05-18 21:56       ` Joel Brobecker
2012-05-19  2:17         ` Tom Tromey
2012-05-19 15:21           ` Daniel Jacobowitz
2012-05-19 21:36             ` Joel Brobecker
2012-05-20 12:16         ` Frank Ch. Eigler
2012-05-21 15:56       ` Pedro Alves
2012-05-21 16:15         ` Jan Kratochvil
2012-05-21 17:37           ` Paul_Koning
2012-05-21 17:58             ` Jan Kratochvil
2012-05-22 18:03               ` Paul_Koning
2012-05-21 18:08           ` Pedro Alves
2012-05-21 18:08             ` Tom Tromey
2012-05-21 18:10             ` Jan Kratochvil
2012-05-21 18:54             ` Matt Rice
2012-05-26 15:50         ` Jan Kratochvil
2012-06-02  7:01           ` Russell Shaw
2012-06-02  7:13             ` Jan Kratochvil
2012-06-02 10:47               ` Russell Shaw
2012-06-02 11:10                 ` Jan Kratochvil
2012-06-02 11:15                   ` Russell Shaw
2012-06-02 11:15                   ` Jan Kratochvil
2012-11-22 18:46     ` Jan Kratochvil
2012-11-22 21:42       ` John Gilmore
2012-11-23 15:26         ` Jan Kratochvil
2012-11-27  1:29       ` Stan Shebs
2012-11-27  2:02         ` Paul_Koning
2012-11-27  2:59           ` Stan Shebs
2012-11-27 15:17             ` Paul_Koning
2012-11-27 21:14             ` Tom Tromey
2012-04-09 23:23   ` Stan Shebs
2012-04-18 14:22     ` Pedro Alves
2012-04-18 18:12       ` Stan Shebs
2012-04-18 18:32         ` Paul_Koning
2012-04-18 18:37         ` Pedro Alves
2012-04-19  8:43   ` Yao Qi
2012-12-04 14:17     ` Jan Kratochvil
2012-12-04 14:44       ` Mark Kettenis
2012-12-04 14:52         ` Jan Kratochvil
2012-12-06 20:39           ` Matt Rice
2012-12-07 12:57             ` Jan Kratochvil
2012-12-07 13:25             ` Yao Qi
2012-12-11  6:25               ` Matt Rice
2012-12-13 15:12                 ` Jan Kratochvil
2012-12-14 11:03                   ` Matt Rice
2012-12-14 12:16                     ` Jan Kratochvil

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=87d374pzqt.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=gdb@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=palves@redhat.com \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).