public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Antoine Tremblay <antoine.tremblay@ericsson.com>
To: Doug Evans <dje@google.com>
Cc: Pedro Alves <palves@redhat.com>, Gary Benson <gbenson@redhat.com>,
	gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 2/7] Move some integer operations to common.
Date: Tue, 22 Sep 2015 17:50:00 -0000	[thread overview]
Message-ID: <560194E7.1070203@ericsson.com> (raw)
In-Reply-To: <CADPb22TMVBzejDjtWr6VRvmtkfzVJpSTtuetMdTLiJaf6i2W_A@mail.gmail.com>



On 09/22/2015 12:05 PM, Doug Evans wrote:
> On Mon, Sep 21, 2015 at 10:49 AM, Antoine Tremblay
> <antoine.tremblay@ericsson.com> wrote:
>>
>>
>> On 09/21/2015 05:16 AM, Pedro Alves wrote:
>>>
>>> On 09/21/2015 10:10 AM, Gary Benson wrote:
>>>>
>>>> Hi Antoine, Pedro,
>>>>
>>>> Antoine Tremblay wrote:
>>>
>>>
>>>>> So I've made bfd.h a requirement of GDBServer, and when there will
>>>>> be a libgdbcommon we can have the whole lib as a requirement there.
>>>>>
>>>>> See patch v2 in next mail...
>>>>
>>>>
>>>> I don't think this will be acceptable.  If I understand correctly,
>>>> gdbserver supports some platforms that GDB (and BFD) does not, and
>>>> this patch would prevent gdbserver being built on those platforms.
>>>> Even if I'm wrong here, I've previously found it useful to build
>>>> gdbserver alone, and I think this would break that too.
>>>>
>>>> Pedro knows more about these kinds of setups, I've copied him in.
>>>>
>>>
>>> (Without looking at the patch in detail),
>>>
>>> Gary's right.  bfd.h is a generated file, generated at bfd build time.
>>> Anton, try building only gdbserver in a clean directory,
>>> separate from gdb, and it will fail with your patch.
>>>
>> Ok I was worried this would not work..
>>
>> I've removed much of the endianness dependencies from my patchset but I
>> still have a dependency on the bfd endiannness enum to share code with GDB's
>> read_memory_unsigned_integer.
>>
>> So I will do a wrapper around read_memory_unsigned_integer in GDB that takes
>> an int and transfers it to the real read_memory_unsigned_integer as the
>> proper enum (by implicit conversion). And use an int when referring to the
>> enum in shared code.
>>
>> Unless there's an objection to this method ?
>
> I'd rather not discard the enum.
>
Yes me too, that's why I had these previous solutions.

> The first question I have is: where do we want to be in the long term?
> I totally support moving more and more application independent code
> into application independent places.
> It's really a shame that something as simple as this is getting in the way.
>
> [Ideally, I'd also like to remove bfd dependencies wherever possible,
> but that can be a bit problematic. So I'm setting aside this
> possibility. E.g., using an enum without bfd in the name.]
>

To me this sounds like a case by case basis, you can't move to 
application independent code without accepting to import some 
dependencies from the applications or removing those dependencies.

So it seems not easy to me to set a future direction to this kind of 
balance. But I'm still new to GDB, I'm sure others may have more ideas 
on this.

> The next question I have is: Is there anything in what we need that
> needs to be in a generated header?
> Can we ask the bfd folks to move things like bfd_endian to a
> non-generated header?
> [bfd.h can still include it]
>

Quickly looking at how bfd.h is done it seems to be possible to move 
some stuff to a static file however I wonder if the current problem 
would prove enough justification for that work.

It would also introduce a bfd version dependency in common code to check 
for this static header. And it could be quite an ugly #ifdef changing 
ints to enum in case the header is present.

One thing to consider too is that this patchset has now changed a bit 
and this enum is no longer used in GDBServer itself at all.

Since the enum is only used in GDB's context and that the common code is 
only a carrier for this context, this is not a risk type wise.

It's also not a risk for C++ conversion, as this is a pure C enum that 
won't be converted to C++ unless bfd is which I doubt may happen ?

It could also be possible to require a make headers in bfd to build 
GDBServer and possibly make that more convenient in the Makefile ?

I'm not sure it's worth it as long as GDBServer doesn't use the enum 
itself, however I'm curious if others would find that acceptable.








  reply	other threads:[~2015-09-22 17:50 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-11 12:13 [PATCH 0/7] Support tracepoints and software breakpoints on ARM aarch32-linux in GDBServer Antoine Tremblay
2015-09-11 12:13 ` [PATCH 1/7] Fix instruction skipping when using software single step " Antoine Tremblay
2015-09-11 12:13 ` [PATCH 2/7] Move some integer operations to common Antoine Tremblay
2015-09-11 14:24   ` Gary Benson
2015-09-11 17:16     ` Antoine Tremblay
2015-09-11 17:32       ` Antoine Tremblay
2015-09-14  9:24         ` Gary Benson
2015-09-14 15:20           ` Antoine Tremblay
2015-09-14 15:28             ` [PATCH 2/7 v2] " Antoine Tremblay
2015-09-21  9:10             ` [PATCH 2/7] " Gary Benson
2015-09-21  9:16               ` Pedro Alves
2015-09-21 17:49                 ` Antoine Tremblay
2015-09-22 16:06                   ` Doug Evans
2015-09-22 17:50                     ` Antoine Tremblay [this message]
2015-09-11 12:14 ` [PATCH 3/7] Support multiple breakpoint types per target in GDBServer Antoine Tremblay
2015-09-11 12:14 ` [PATCH 7/7] Support tracepoints and software breakpoints on ARM aarch32-linux " Antoine Tremblay
2015-09-11 12:30   ` Eli Zaretskii
2015-09-11 12:43     ` Antoine Tremblay
2015-09-11 12:14 ` [PATCH 4/7] Make breakpoint and breakpoint_len local variables " Antoine Tremblay
2015-09-11 12:14 ` [PATCH 5/7] Add support for software single step on ARM aarch32-linux " Antoine Tremblay
2015-09-14 11:00   ` Yao Qi
2015-09-14 12:41     ` Antoine Tremblay
2015-09-14 16:10       ` Yao Qi
2015-09-14 17:28         ` Antoine Tremblay
2015-09-15  7:22           ` Yao Qi
2015-09-15 12:33             ` Antoine Tremblay
2015-09-15 16:49               ` Antoine Tremblay
2015-09-11 12:14 ` [PATCH 6/7] Support conditional breakpoints on targets that can software single step " Antoine Tremblay
2015-09-14 10:33 ` [PATCH 0/7] Support tracepoints and software breakpoints on ARM aarch32-linux " Yao Qi
2015-09-14 13:23   ` Antoine Tremblay
2015-09-15 14:02     ` Yao Qi
2015-09-15 14:08       ` Antoine Tremblay
2015-09-23 20:40 [PATCH 2/7] Move some integer operations to common Doug Evans
2015-09-24 11:53 ` Antoine Tremblay

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=560194E7.1070203@ericsson.com \
    --to=antoine.tremblay@ericsson.com \
    --cc=dje@google.com \
    --cc=gbenson@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --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).