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:06:00 -0000	[thread overview]
Message-ID: <5579F856.9030202@ericsson.com> (raw)
In-Reply-To: <555E1989.7010407@redhat.com>

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


  reply	other threads:[~2015-06-11 21:06 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 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: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 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:48 ` [PATCH v2 7/7] MI: consider addressable unit size when reading/writing memory Simon Marchi
2015-05-21 17:52   ` Pedro Alves
2015-06-15 19:51     ` Simon Marchi
2015-04-15 19:48 ` [PATCH v2 6/7] remote: " 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-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-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 [this message]
2015-06-11 21:10     ` Simon Marchi
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=5579F856.9030202@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