All of lore.kernel.org
 help / color / mirror / Atom feed
From: takahiro.akashi@linaro.org (AKASHI Takahiro)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC] ptrace: add generic SET_SYSCALL request
Date: Fri, 14 Nov 2014 10:40:14 +0900	[thread overview]
Message-ID: <54655D7E.1000301@linaro.org> (raw)
In-Reply-To: <1472197.o98pKNTkBz@wuerfel>

Ulrich, Arnd, thank you for your discussions:

On 11/14/2014 07:25 AM, Arnd Bergmann wrote:
> On Thursday 13 November 2014 15:49:20 Ulrich Weigand wrote:
>> Arnd Bergmann <arnd@arndb.de> wrote on 13.11.2014 11:21:28:
>>
>>> I have to admit that I don't really understand gdb internals, but from
>>> a first look I get the impression that it will just do the right thing
>>> if you reuse NT_S390_SYSTEM_CALL on ARM64 with the same semantics.
>>
>> There's an interface between BFD and GDB proper involved here.  BFD will
>> detect the presence of register set notes in the core dump, and will
>> translate them into virtual sections; GDB will then simply look up such
>> sections under well-known names.
>>
>> In particular, the NT_S390_SYSTEM_CALL note will be translated by BFD
>> into a virtual section named ".reg-s390-system-call"; GDB platform-
>> specific code will look for sections of this particular name.
>>
>> So if you were to create notes using the same note type, by default it
>> would do nothing on ARM64.  You might add code to the ARM64 back-end
>> to also look for a section ".reg-s390-system-call", but that would be
>> somewhat confusing.  Using a new, platform-specific note type for ARM64
>> would appear to fit better with existing precedent.

I implemented a regset of NT_SYSTEM_CALL(=NT_S390_SYSTEM_CALL) experimentally,
and checked a generated core file:

 >$ aarch64-linux-gnu-readelf -Wn <...>/tmp/nulltest/core
 >
 >Displaying notes found at file offset 0x000003c0 with length 0x00000a68:
 >  Owner                 Data size    Description
 >  CORE                 0x00000188    NT_PRSTATUS (prstatus structure)
 >  CORE                 0x00000088    NT_PRPSINFO (prpsinfo structure)
 >  CORE                 0x00000080    NT_SIGINFO (siginfo_t data)
 >  CORE                 0x00000130    NT_AUXV (auxiliary vector)
 >  CORE                 0x000001b4    NT_FILE (mapped files)
 >    Page size: 4096
 >                 Start                 End         Page Offset
 >[snip]...
 >  CORE                 0x00000210    NT_FPREGSET (floating point registers)
 >  LINUX                0x00000008    NT_ARM_TLS (AArch TLS registers)
 >  LINUX                0x00000108    NT_ARM_HW_BREAK (AArch hardware breakpoint registers)
 >  LINUX                0x00000108    NT_ARM_HW_WATCH (AArch hardware watchpoint registers)
 >  LINUX                0x00000004    NT_S390_SYSTEM_CALL (s390 system call restart data)

Looks funny:)

> Ok, thanks a lot for your insight and for confirming what Takahiro AKASHI
> said. Let's use a new NT_ARM64_SYSTEM_CALL type with a different
> number then.

We will use NT_ARM_SYSTEM_CALL(=0x404) as other NT_ARM_*, except NT_ARM_VFP,
are also shared by arch/arm and arch/arm64.

Anyhow, gdb (and/or binutils?) should be updated as well once my coming patch is merged.
My next question is who should know this?

Thanks,
-Takahiro AKASHI

> 	Arnd
>

WARNING: multiple messages have this Message-ID (diff)
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Arnd Bergmann <arnd@arndb.de>,
	Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Cc: Andreas Krebbel1 <Andreas.Krebbel@de.ibm.com>,
	"keescook@chromium.org" <keescook@chromium.org>,
	linaro-kernel@lists.linaro.org,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Oleg Nesterov <oleg@redhat.com>,
	"roland@hack.frob.com" <roland@hack.frob.com>
Subject: Re: [RFC] ptrace: add generic SET_SYSCALL request
Date: Fri, 14 Nov 2014 10:40:14 +0900	[thread overview]
Message-ID: <54655D7E.1000301@linaro.org> (raw)
In-Reply-To: <1472197.o98pKNTkBz@wuerfel>

Ulrich, Arnd, thank you for your discussions:

On 11/14/2014 07:25 AM, Arnd Bergmann wrote:
> On Thursday 13 November 2014 15:49:20 Ulrich Weigand wrote:
>> Arnd Bergmann <arnd@arndb.de> wrote on 13.11.2014 11:21:28:
>>
>>> I have to admit that I don't really understand gdb internals, but from
>>> a first look I get the impression that it will just do the right thing
>>> if you reuse NT_S390_SYSTEM_CALL on ARM64 with the same semantics.
>>
>> There's an interface between BFD and GDB proper involved here.  BFD will
>> detect the presence of register set notes in the core dump, and will
>> translate them into virtual sections; GDB will then simply look up such
>> sections under well-known names.
>>
>> In particular, the NT_S390_SYSTEM_CALL note will be translated by BFD
>> into a virtual section named ".reg-s390-system-call"; GDB platform-
>> specific code will look for sections of this particular name.
>>
>> So if you were to create notes using the same note type, by default it
>> would do nothing on ARM64.  You might add code to the ARM64 back-end
>> to also look for a section ".reg-s390-system-call", but that would be
>> somewhat confusing.  Using a new, platform-specific note type for ARM64
>> would appear to fit better with existing precedent.

I implemented a regset of NT_SYSTEM_CALL(=NT_S390_SYSTEM_CALL) experimentally,
and checked a generated core file:

 >$ aarch64-linux-gnu-readelf -Wn <...>/tmp/nulltest/core
 >
 >Displaying notes found at file offset 0x000003c0 with length 0x00000a68:
 >  Owner                 Data size    Description
 >  CORE                 0x00000188    NT_PRSTATUS (prstatus structure)
 >  CORE                 0x00000088    NT_PRPSINFO (prpsinfo structure)
 >  CORE                 0x00000080    NT_SIGINFO (siginfo_t data)
 >  CORE                 0x00000130    NT_AUXV (auxiliary vector)
 >  CORE                 0x000001b4    NT_FILE (mapped files)
 >    Page size: 4096
 >                 Start                 End         Page Offset
 >[snip]...
 >  CORE                 0x00000210    NT_FPREGSET (floating point registers)
 >  LINUX                0x00000008    NT_ARM_TLS (AArch TLS registers)
 >  LINUX                0x00000108    NT_ARM_HW_BREAK (AArch hardware breakpoint registers)
 >  LINUX                0x00000108    NT_ARM_HW_WATCH (AArch hardware watchpoint registers)
 >  LINUX                0x00000004    NT_S390_SYSTEM_CALL (s390 system call restart data)

Looks funny:)

> Ok, thanks a lot for your insight and for confirming what Takahiro AKASHI
> said. Let's use a new NT_ARM64_SYSTEM_CALL type with a different
> number then.

We will use NT_ARM_SYSTEM_CALL(=0x404) as other NT_ARM_*, except NT_ARM_VFP,
are also shared by arch/arm and arch/arm64.

Anyhow, gdb (and/or binutils?) should be updated as well once my coming patch is merged.
My next question is who should know this?

Thanks,
-Takahiro AKASHI

> 	Arnd
>

  reply	other threads:[~2014-11-14  1:40 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-07  7:47 [RFC] ptrace: add generic SET_SYSCALL request AKASHI Takahiro
2014-11-07  7:47 ` AKASHI Takahiro
2014-11-07  9:30 ` Arnd Bergmann
2014-11-07  9:30   ` Arnd Bergmann
2014-11-07 11:55   ` Will Deacon
2014-11-07 11:55     ` Will Deacon
2014-11-07 12:03     ` Arnd Bergmann
2014-11-07 12:03       ` Arnd Bergmann
2014-11-07 12:11       ` Russell King - ARM Linux
2014-11-07 12:11         ` Russell King - ARM Linux
2014-11-07 12:44         ` Arnd Bergmann
2014-11-07 12:44           ` Arnd Bergmann
2014-11-07 13:11           ` Will Deacon
2014-11-07 13:11             ` Will Deacon
2014-11-07 14:30             ` Arnd Bergmann
2014-11-07 14:30               ` Arnd Bergmann
2014-11-07 16:44               ` Kees Cook
2014-11-07 16:44                 ` Kees Cook
2014-11-07 23:05                 ` Roland McGrath
2014-11-07 23:05                   ` Roland McGrath
2014-11-07 12:27       ` Will Deacon
2014-11-07 12:27         ` Will Deacon
2014-11-10  6:36         ` AKASHI Takahiro
2014-11-10  6:36           ` AKASHI Takahiro
2014-11-07 14:04 ` Oleg Nesterov
2014-11-07 14:04   ` Oleg Nesterov
2014-11-12 10:46   ` AKASHI Takahiro
2014-11-12 10:46     ` AKASHI Takahiro
2014-11-12 11:00     ` Will Deacon
2014-11-12 11:00       ` Will Deacon
2014-11-12 11:06       ` AKASHI Takahiro
2014-11-12 11:06         ` AKASHI Takahiro
2014-11-12 11:13         ` Will Deacon
2014-11-12 11:13           ` Will Deacon
2014-11-12 11:19           ` Arnd Bergmann
2014-11-12 11:19             ` Arnd Bergmann
2014-11-12 12:05             ` Russell King - ARM Linux
2014-11-12 12:05               ` Russell King - ARM Linux
2014-11-13  7:02             ` AKASHI Takahiro
2014-11-13  7:02               ` AKASHI Takahiro
2014-11-13 10:21               ` Arnd Bergmann
2014-11-13 10:21                 ` Arnd Bergmann
2014-11-13 14:49                 ` Ulrich Weigand
2014-11-13 14:49                   ` Ulrich Weigand
2014-11-13 22:25                   ` Arnd Bergmann
2014-11-13 22:25                     ` Arnd Bergmann
2014-11-14  1:40                     ` AKASHI Takahiro [this message]
2014-11-14  1:40                       ` AKASHI Takahiro

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=54655D7E.1000301@linaro.org \
    --to=takahiro.akashi@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.