linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: wade_farnsworth@mentor.com (Wade Farnsworth)
To: linux-arm-kernel@lists.infradead.org
Subject: ARM tracehook support
Date: Mon, 20 Feb 2012 11:08:57 -0700	[thread overview]
Message-ID: <4F428C39.40906@mentor.com> (raw)
In-Reply-To: <20120220154748.GG25462@mudshark.cambridge.arm.com>

Will Deacon wrote:
> On Mon, Feb 20, 2012 at 03:37:57PM +0000, Wade Farnsworth wrote:
>> Hi all,
>
> Hello Wade,
>
>> A few months back, Steven Walter posted some patches that implemement
>> syscall tracing support for ARM:
>>
>> http://lists.arm.linux.org.uk/lurker/message/20111129.162812.bd17d9b5.en.html#linux-arm-kernel
>>
>> I've been working on SystemTap support for ARM, and the tracehook patch
>> in particular is interesting in that respect.  With that patch applied,
>> it would allow utrace to be supported on ARM, which is necessary for
>> userspace stap probes to function properly.
>>
>>   From what testing I've done, the patches don't appear to be harmful.
>> So, I'm wondering what's preventing this from being pushed into
>> mainline?  Are there still outstanding issues that need to be addressed?
>
> Yup, I posted some questions here:
>
> http://lists.infradead.org/pipermail/linux-arm-kernel/2011-December/074802.html

OK, so to continue that conversation:

Will Deacon wrote:
 > On Wed, Nov 30, 2011 at 02:46:20PM +0000, Steven Walter wrote:
 >> +static inline void syscall_get_arguments(struct task_struct *task,
 >> +					 struct pt_regs *regs,
 >> +					 unsigned int i, unsigned int n,
 >> +					 unsigned long *args)
 >> +{
 >> +	BUG_ON(i + n > 6);
 >
 > So I guess 6 is the maximum number of registers that are used for
 > syscall passing. That sounds about right to me, but I wondered how
 > you worked it out (and whether or not it should be defined
 > somewhere?).

I believe the 6 argument constraint is a specific to 
syscall_get_arguments().  Notice the comment in 
include/asm-generic/syscall.h:

/*
[...]
  *
  * It's only valid to call this when @task is stopped for tracing on
  * entry to a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
  * It's invalid to call this with @i + @n > 6; we only support system calls
  * taking up to 6 arguments.
  */

Additionally, if you'll look at the other architectures' implementations 
you'll see similar code.

 > In fact, how are these things supposed to deal with 64-bit arguments
 > that straddle two registers? I think we always pack arguments such
 > that we don't get holes in the register layout, but it might be worth 
 > checking (EABI requires 64-bit arguments to be passed in even
 > registers).

Hmm, I do believe that 32-bit powerpc has similar alignment issues 
(64-bit args must be passed in odd/even pairs), but I don't see any 
special handling of this in that architecture's 
syscall_get/set_arguments().  So I'm wondering if the handling of this 
is or should be handled elsewhere.  I'll keep digging on this.

>
> but I haven't heard anything from Steven since then, so it's all stalled at
> the moment. They'll also obviously need rebasing onto latest mainline,
> although that shouldn't be too hard since they're still fairly recent.
>

Yes, it does not appear to be too difficult.  I've already made some 
progress here, and will post my patches once the other issues have been 
resolved.

Thanks again,

-Wade

  reply	other threads:[~2012-02-20 18:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-20 15:37 ARM tracehook support Wade Farnsworth
2012-02-20 15:47 ` Will Deacon
2012-02-20 18:08   ` Wade Farnsworth [this message]
2012-02-21 17:06     ` Wade Farnsworth
2012-02-21 17:24       ` Will Deacon
2012-02-21 17:30         ` Russell King - ARM Linux
2012-02-21 17:27     ` Russell King - ARM Linux
2012-02-21 18:08       ` Wade Farnsworth

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=4F428C39.40906@mentor.com \
    --to=wade_farnsworth@mentor.com \
    --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 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 NNTP newsgroup(s).