public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Omair Javaid <omair.javaid@linaro.org>
To: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Pedro Alves <palves@redhat.com>, Yao Qi <qiyaoltc@gmail.com>,
		GDB Patches <gdb-patches@sourceware.org>
Subject: Re: Re: [PATCH 0/3 v3] [AArch64] Support tagged pointer
Date: Mon, 23 Apr 2018 07:50:00 -0000	[thread overview]
Message-ID: <CANW4E-0SUj6+_udG2t-CDdq-1wDpgRGLytNZsehWWF_oQnNc0w@mail.gmail.com> (raw)
In-Reply-To: <b54fc6d2-c4a2-f82f-12e3-b3c1d20055af@linaro.org>

On 20 April 2018 at 21:13, Daniel Thompson <daniel.thompson@linaro.org> wrote:
>
> On 20/04/18 15:33, Omair Javaid wrote:
>>
>> On 17 April 2018 at 03:57, Pedro Alves <palves@redhat.com> wrote:
>>
>>> On 04/16/2018 02:36 AM, Omair Javaid wrote:
>>>>
>>>> On 11 April 2018 at 23:27, Pedro Alves <palves@redhat.com> wrote:
>>>>
>>>>> On 04/11/2018 12:59 PM, Omair Javaid wrote:
>>>>>
>>>>>> Yes I can submit a patch that enables set_gdbarch_significant_addr_bit
>>>>>
>>>>> for aarch64-linux-tdep only.
>>>>>>
>>>>>>
>>>>>> But a point to discuss here is the use-case where some people use
>>>>>
>>>>> *-linux-gdb for debugging seamlessly between kernel and user-space.
>>>>>>
>>>>>>
>>>>>> There can be ways we can distinguish between user/kernel address space
>>>>>
>>>>> and clear or set top byte of the address even in case of linux targets.
>>>>>>
>>>>>>
>>>>>> Does this sound something we should do?
>>>>>
>>>>>
>>>>> Yeah, why not.
>>>>>
>>>>> What are the pending kernel debugging patches using to distinguish
>>>>> userspace and kernel debugging modes?  Off hand, I'd think we'd want to
>>>>> make those separate ABIs / osabis / gdbarchs.
>>>>>
>>>>
>>>> Sorry for late reply on this I am out of office this week.
>>>>
>>>> I have given this a thought and I propose to do the following:
>>>>
>>>> Turn on pointer tagging on OSABI (LINUX) by default.
>>>>
>>>> Add commands set aarch64 pointer-tagging show/enable/disable.
>>>>
>>>> Once LKD patches for aarch64/arm land in our need for this will
>>>> automatically be solved.
>>>
>>>
>>> Makes sense, but I'd like to clarify usefulness of the separate
>>> "set aarch64 pointer-tagging" command.
>>> If indeed we're doing to end up with a separate osabi for the Linux
>>> kernel, then "set osabi linux-kernel" will result
>>> in disabling pointer-tagging too.  So, will it still be useful to have
>>> the specific "set aarch64 pointer-tagging" commands?  Do you see
>>> use cases for "set aarch64 pointer-tagging" beyond disabling it
>>> for Linux kernel debugging?  I'm thinking that it may be useful
>>> for bare metal debugging.  But, ideally, GDB would figure it out
>>> on its own without user intervention.  Is there's some bit in some
>>> register gdb could read that indicates whether tagging is enabled?
>>>
>>>
>> Pointer tagging information is stored in MMU registers so in linux
>> user-space we cannot actually read if pointer tagging is enabled or not
>> based on register bits.
>> JTAG debuggers should be able to read MMU registers and know whether
>> pointer tagging is enabled or not.
>
>
> Perhaps a dumb question but could gdb be persuaded to mask the pointers at a lower level.
>
> The current patches end up masking the pointer tags relatively early, which results in masked pointers being sent via the gdb remote protocol (which is what causes some of the problems at present: kgdb and OpenOCD get asked for the wrong pointer).
>
> If the pointers were masked as the arguments to ptrace() were marshaled this would behave much more like the real hardware and would make debugging Linux kernel mode entirely transparent (since you cannot ptrace() kernel memory we would never try masking out the tag).

Although this can be done with a hook but will require some
fundamental changes to the way ptrace inf_ptrace_xfer_partial memory
accesses routines are written. Currently we use a generic
implementation inf_ptrace_xfer_partial for all target architectures.
Same is the case with GDBServer it just handles the ptrace calls
except in a few cases where we need extra architecture specific code
before ptrace call like setting hardware breakpoints watchpoints etc.

As top byte in tagged address is essentially data, pushing masking
down to gdbserver will mean that we ll be sending out data mangled as
part of the address. Passing mangled address over RSP expecting other
side will correct it doesnt sound right.

Lets see what Pedro has to see on this.

>
> More generally masking would become the problem of the register read code for the target. I suspect many JTAG debuggers would (and certainly should) already work correctly as their register reads can honour the TTBR0 status.
>
>
> Daniel.

  reply	other threads:[~2018-04-23  7:50 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-08 10:04 Yao Qi
2017-12-08 10:04 ` [PATCH 2/3] Adjust breakpoint address by clearing non-significant bits Yao Qi
2017-12-08 12:22   ` Pedro Alves
2017-12-08 10:04 ` [PATCH 1/3] Clear non-significant bits of address on memory access Yao Qi
2017-12-08 12:22   ` Pedro Alves
2017-12-08 15:13     ` Ulrich Weigand
2017-12-08 15:36       ` Yao Qi
2017-12-19 13:50   ` Ulrich Weigand
2017-12-19 15:41     ` Yao Qi
2017-12-19 16:15       ` Ulrich Weigand
2017-12-20  9:57         ` Yao Qi
2017-12-20 13:03           ` [pushed] Fix Cell/B.E. regression (Re: [PATCH 1/3] Clear non-significant bits of address on memory access) Ulrich Weigand
2017-12-20 13:59             ` Yao Qi
2017-12-08 10:04 ` [PATCH 3/3] Clear non-significant bits of address in watchpoint Yao Qi
2017-12-08 12:23   ` Pedro Alves
2017-12-08 12:24 ` [PATCH 0/3 v3] [AArch64] Support tagged pointer Pedro Alves
2017-12-08 17:31 ` Yao Qi
2018-04-11  0:16   ` Omair Javaid
2018-04-11  0:37     ` Omair Javaid
2018-04-11  2:46       ` Simon Marchi
2018-04-11 10:14     ` Pedro Alves
2018-04-11 11:13       ` Omair Javaid
2018-04-11 11:19         ` Pedro Alves
2018-04-11 12:01           ` Omair Javaid
2018-04-11 18:27             ` Pedro Alves
2018-04-16  1:36               ` Omair Javaid
2018-04-16 22:57                 ` Pedro Alves
2018-04-20 14:34                   ` Omair Javaid
2018-04-20 16:13                     ` Daniel Thompson
2018-04-23  7:50                       ` Omair Javaid [this message]
2018-04-24 11:39                         ` Pedro Alves
2018-04-24 15:44                           ` Daniel Thompson
2018-04-24 11:48                     ` Pedro Alves
2018-04-24 16:05                       ` Daniel Thompson
2018-04-24 23:42                         ` Omair Javaid
2018-04-25  0:09                           ` Andrew Pinski
2018-04-25  8:04                           ` Daniel Thompson
2018-04-26  8:11                             ` Omair Javaid
2018-04-27 16:29                               ` Daniel Thompson
2018-04-30 13:42                                 ` Omair Javaid

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=CANW4E-0SUj6+_udG2t-CDdq-1wDpgRGLytNZsehWWF_oQnNc0w@mail.gmail.com \
    --to=omair.javaid@linaro.org \
    --cc=daniel.thompson@linaro.org \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=qiyaoltc@gmail.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).