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
next prev parent 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