Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Luis Machado via Gdb-patches <gdb-patches@sourceware.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: david.spickett@linaro.org, gdb-patches@sourceware.org
Subject: Re: [PATCH v2 20/24] Documentation for the new mtag commands
Date: Mon, 26 Oct 2020 11:59:29 -0300	[thread overview]
Message-ID: <53e13a05-ee8d-063a-fad7-b1fe3b43ad6c@linaro.org> (raw)
In-Reply-To: <fd097dd3-a3b1-cd01-932c-d53c671386e0@linaro.org>

On 10/23/20 4:04 PM, Luis Machado wrote:
> On 10/23/20 2:52 PM, Eli Zaretskii wrote:
>>> Cc: gdb-patches@sourceware.org, david.spickett@linaro.org
>>> From: Luis Machado <luis.machado@linaro.org>
>>> Date: Fri, 23 Oct 2020 11:33:36 -0300
>>>
>>> But, in general, there will always be a memory-side tag against which a
>>> logical tag (contained in a pointer, for example) will be matched 
>>> against.
>>
>> This is the crucial aspect that should be stated, IMO.
>>
> 
> I realized the order of the phrases was a bit off. I reordered it a bit 
> and added to it. How does the following look?
> 
> "Memory tagging is a memory protection technology that uses a pair of 
> tags to validate memory accesses through pointers.  The tags are integer 
> values usually comprised of a few bits, depending on the architecture.
> 
> There are two types of tags that are used in this setup: logical and
> allocation.  A logical tag is stored in the pointers themselves, usually 
> at the  higher bits of the pointers.  An allocation tag is the tag 
> associated with particular ranges of memory in the physical address 
> space, against which the logical tags from pointers are compared.
> 
> The pointer tag (logical tag) must match the memory tag (allocation tag)
> for the memory access to be valid.  If the logical tag does not match 
> the allocation tag, that will raise a memory violation.
> 
> Allocation tags cover multiple contiguous bytes of physical memory. This 
> range of bytes is called a memory tag granule and is 
> architecture-specific.  For example,  AArch64 has a tag granule of 16 
> bytes, meaning each allocation tag spans 16 bytes of memory.
> 
> If the underlying architecture supports memory tagging, like AArch64 MTE
> or SPARC ADI do,  @value{GDBN} can make use of it to validate addresses 
> and pointers against memory allocation tags.
> 
> A command prefix of @code{mtag} gives access to the various memory 
> tagging commands."
> 
> 
>>>>> +@kindex mtag setltag
>>>>> +@item mtag setltag @var{address_expression} @var{tag_bytes}
>>>>> +Print the address given by @var{address_expression}, augmented 
>>>>> with a logical
>>>>
>>>> It is strange for a command whose name is "set..." to print
>>>> something.  I'd expect it to set something instead.  is the above
>>>> description correct?
>>>>
>>>
>>> Yes. This is one area that I'd welcome some discussion/feedback.
>>>
>>> We don't always have a modifiable value as an argument to the "mtag
>>> setltag" command. We could have a constant value, a read-only value,
>>> some reference or some expression containing multiple pointers.
>>>
>>> Plus, the most natural way to modify a value in GDB is through the
>>> existing "set variable" command.
>>>
>>> The main goal is to be able to augment a particular address with a given
>>> logical tag. That augmented value can then be used to set a particular
>>> pointer or value. It will be stored in the history anyway, so that's
>>> already a value that you can use.
>>>
>>> There won't be much reason to set logical tags other than if you're
>>> chasing bugs and trying to cause one. It is one additional knob so that
>>> you won't need to craft the tagged pointer by hand.
>>
>> Maybe the command should be called something other than "set...",
>> then?
>>
> 
> Maybe. Though honestly I'm not really sure what to call it. Even if we 
> call it "set" and make it really set some variable's value, it won't be 
> able to set the value of an expression with multiple variables, for 
> example.
> 
> I'll have to think about it.
> 

David Spicket (cc-ed, handling LLDB's MTE enablement), has suggested 
"mtag withltag" as opposed to "mtag setltag", which implies we will only 
display the modified/tagged version of a particular address expression, 
without setting any value.

How does that sound?

  parent reply	other threads:[~2020-10-26 14:59 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-22 19:59 [PATCH v2 00/24] Memory Tagging Support + AArch64 Linux implementation Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 01/24] New target methods for memory tagging support Luis Machado via Gdb-patches
2020-10-27 13:22   ` Simon Marchi
2020-10-27 13:43     ` Luis Machado via Gdb-patches
2020-10-27 13:50       ` Simon Marchi
2020-10-22 19:59 ` [PATCH v2 02/24] New gdbarch memory tagging hooks Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 03/24] Add GDB-side remote target support for memory tagging Luis Machado via Gdb-patches
2020-10-29 14:22   ` Alan Hayward via Gdb-patches
2020-10-29 14:41     ` Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 04/24] Unit testing for GDB-side remote memory tagging handling Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 05/24] GDBserver remote packet support for memory tagging Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 06/24] Unit tests for gdbserver memory tagging remote packets Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 07/24] Documentation for " Luis Machado via Gdb-patches
2020-10-23  6:25   ` Eli Zaretskii via Gdb-patches
2020-10-23 14:07     ` Luis Machado via Gdb-patches
2020-10-23 14:33       ` Eli Zaretskii via Gdb-patches
2020-10-23 14:39         ` Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 08/24] AArch64: Add MTE CPU feature check support Luis Machado via Gdb-patches
2020-10-22 19:59 ` [PATCH v2 09/24] AArch64: Add target description/feature for MTE registers Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 10/24] AArch64: Add MTE register set support for GDB and gdbserver Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 11/24] AArch64: Add MTE ptrace requests Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 12/24] AArch64: Implement memory tagging target methods for AArch64 Luis Machado via Gdb-patches
2020-10-29 14:21   ` Alan Hayward via Gdb-patches
2020-10-29 14:39     ` Luis Machado via Gdb-patches
2020-10-29 14:45       ` Luis Machado via Gdb-patches
2020-10-29 17:32         ` Alan Hayward via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 13/24] Refactor parsing of /proc/<pid>/smaps Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 14/24] AArch64: Implement the memory tagging gdbarch hooks Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 15/24] AArch64: Add unit testing for logical tag set/get operations Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 16/24] AArch64: Report tag violation error information Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 17/24] AArch64: Add gdbserver MTE support Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 18/24] AArch64: Add MTE register set support for core files Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 19/24] New mtag commands Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 20/24] Documentation for the new " Luis Machado via Gdb-patches
2020-10-23  6:35   ` Eli Zaretskii via Gdb-patches
2020-10-23 14:33     ` Luis Machado via Gdb-patches
2020-10-23 17:52       ` Eli Zaretskii via Gdb-patches
2020-10-23 19:04         ` Luis Machado via Gdb-patches
2020-10-23 19:34           ` Eli Zaretskii via Gdb-patches
2020-10-26 14:59           ` Luis Machado via Gdb-patches [this message]
2020-10-26 15:35             ` Eli Zaretskii via Gdb-patches
2020-10-26 16:57               ` Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 21/24] Extend "x" and "print" commands to support memory tagging Luis Machado via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 22/24] Document new "x" and "print" memory tagging extensions Luis Machado via Gdb-patches
2020-10-23  6:37   ` Eli Zaretskii via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 23/24] Add NEWS entry Luis Machado via Gdb-patches
2020-10-23  6:38   ` Eli Zaretskii via Gdb-patches
2020-10-22 20:00 ` [PATCH v2 24/24] Add memory tagging testcases Luis Machado via Gdb-patches

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=53e13a05-ee8d-063a-fad7-b1fe3b43ad6c@linaro.org \
    --to=gdb-patches@sourceware.org \
    --cc=david.spickett@linaro.org \
    --cc=eliz@gnu.org \
    --cc=luis.machado@linaro.org \
    /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