Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@ericsson.com>
To: Pedro Alves <palves@redhat.com>, <gdb-patches@sourceware.org>
Subject: Re: [PATCH v2 0/7] Support reading/writing memory on architectures with non 8-bits addressable memory
Date: Thu, 11 Jun 2015 21:10:00 -0000	[thread overview]
Message-ID: <5579F92B.5000006@ericsson.com> (raw)
In-Reply-To: <5579F856.9030202@ericsson.com>

On 15-06-11 05:06 PM, Simon Marchi wrote:
> On 15-05-21 01:44 PM, Pedro Alves wrote:
>> This confuses me and gives me lots of pause.  My immediate reaction
>> is, "well, that's odd. what's different compared to MI here?".  I'm
>> not imagining what exactly ends up being easier?
>>
>> But anyway, I guess it's a small detail.  I'll review ignoring
>> that.
> 
> I was trying to reply and explain the logic behind my choice, but the
> more I developed, the more I felt it was not really founded.
> 
> My reasoning about the difference was the following:
> 
> """
> In RSP, the size is there for GDB to tell the target "here is how much data
> I am handing you". Its function is to describe the data found in the packet.
> It's more there as a matter convenience, saying how much data follows, than
> representing an amount of target memory units.
> 
> In MI, the size is not describing the amount of data you are handing GDB. It
> represents a size in the context of the memory of the target.
> """
> 
> However, the paragraph about RSP doesn't make much sense. We are the ones
> defining the protocol, so the field can mean whatever we want. If we want it
> to be in target addressable memory units, then there is nothing that prevents
> that. It just needs to be well documented. Also, I realize that writing memory
> would be the only place where we would be talking about the target's memory in
> bytes, so it's not so really consistent.
> 
> About the "it is easier" part, I initially found that the common part of gdbserver
> would be less encumbered with code related to this if those sizes were in bytes.
> Namely,
> 
>  * decode_M_packet
>  * decode_X_packet
>  * write_inferior_memory
>  * read_inferior_memory
>  * code related to this in process_serial_event
> 
> could just operate on bytes and work without knowledge of the addressable memory unit.
> However, upon closer inspection, it seems like other functions will need to be aware
> of it anyway, such as check_mem_read and check_mem_write. These two functions do
> computations on addresses, so they need to have the length of the read/write in
> addressable units and not bytes. If we do it for these two functions, then it's
> not much more work to do it cleanly for the other functions as well.
> 
> Here is a draft of how the changes would look like in gdbserver when using addressable
> memory units. It's really not that bad I think.
> 
> https://github.com/simark/binutils-gdb/commit/2ecb2f054a288053e3726e92fb6126dd4c782a15
> 
> So in the end, it might be more consistent to use addressable memory units everywhere
> in the RSP, and not more complicated to implement. Of course, that's only for things
> related to the target memory, things that fetch an XML file would still be in bytes.
> 
> What is your opinion on this?
> 
>>>
>>>    -> $m1000,8#??
>>>    <- aaaabbbbccccdddd
>>>
>>>    -> $M1000,6:eeeeffffeeee#??
>>>    <- OK
>>>
>>>    -> $m1000,8#??
>>>    <- eeeeffffeeeedddd
>>>
>>> If there are any other RSP packets or MI commands that need such
>>> clarification, it will be on a case-by-case basis, whatever makes more
>>> sense for each particular one.
>>
>> Off hand, I thought of qCRC and qSearch:memory.  The latter is
>> more interesting:
>>
>> - Would you allow searching for an 1 8-bit byte pattern?
> 
> Hmm I don't know. To be safe I'd say no. If we do, it means we need to
> search with a granularity of a byte. What if you search for the pattern
> 0x2345 in this memory:
> 
> 0x100 0123
> 0x101 4567
> 0x102 89ab
> 0x103 cdef
> 
> Should there be a match that spans halves of two addresses? Unless we only
> search with a byte granularity in the special case where the pattern is
> one byte long? But then what about 3-bytes patterns?
> 
> I think it's a lot of corner cases for not much value. I think it could be
> enhanced later to support it if somebody needs it.
> 
>> - So what length would you use for that one?  Host byte
>>   or addressable units?
> 
> Length here would be in addressable units.
> 
>> Thanks,
>> Pedro Alves
>>
> 
> Thanks,
> 
> Simon

Oh, and I acknowledged your comments in the individual patches, they are all
clear, thanks a lot.

Simon


  reply	other threads:[~2015-06-11 21:10 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-15 19:47 Simon Marchi
2015-04-15 19:47 ` [PATCH v2 1/7] Various cleanups in target read/write code Simon Marchi
2015-05-21 17:45   ` Pedro Alves
2015-06-12 17:09     ` Simon Marchi
2015-04-15 19:47 ` [PATCH v2 3/7] Clarify doc about memory read/write and non-8-bits addressable memory unit sizes Simon Marchi
2015-04-16 14:48   ` Eli Zaretskii
2015-06-12 20:28     ` Simon Marchi
2015-06-13  6:49       ` Eli Zaretskii
2015-06-15 17:40         ` Simon Marchi
2015-06-15 18:09           ` Eli Zaretskii
2015-06-15 19:38             ` Simon Marchi
2015-04-15 19:47 ` [PATCH v2 5/7] target: consider addressable unit size when reading/writing memory Simon Marchi
2015-05-21 17:46   ` Pedro Alves
2015-06-12 21:07     ` Simon Marchi
2015-04-15 19:48 ` [PATCH v2 7/7] MI: " Simon Marchi
2015-05-21 17:52   ` Pedro Alves
2015-06-15 19:51     ` Simon Marchi
2015-04-15 19:48 ` [PATCH v2 2/7] Cleanup some docs about memory write Simon Marchi
2015-05-21 17:45   ` Pedro Alves
2015-06-12 19:17     ` Simon Marchi
2015-06-15  9:57       ` Pedro Alves
2015-06-15 17:36         ` Simon Marchi
2015-04-15 19:48 ` [PATCH v2 4/7] gdbarch: add addressable_memory_unit_size method Simon Marchi
2015-05-21 17:46   ` Pedro Alves
2015-06-12 20:54     ` Simon Marchi
2015-04-15 19:48 ` [PATCH v2 6/7] remote: consider addressable unit size when reading/writing memory Simon Marchi
2015-05-21 17:48   ` Pedro Alves
2015-06-15 19:28     ` Simon Marchi
2015-06-17 11:55       ` Pedro Alves
2015-06-18 17:14         ` Simon Marchi
2015-05-21 17:44 ` [PATCH v2 0/7] Support reading/writing memory on architectures with non 8-bits addressable memory Pedro Alves
2015-06-11 21:06   ` Simon Marchi
2015-06-11 21:10     ` Simon Marchi [this message]
2015-06-12 12:00     ` Pedro Alves

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=5579F92B.5000006@ericsson.com \
    --to=simon.marchi@ericsson.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