linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC][PATCH] ARM: ptrace: remove single-step emulation code
Date: Mon, 24 Jan 2011 16:18:17 -0000	[thread overview]
Message-ID: <000501cbbbe2$4fb55d00$ef201700$@deacon@arm.com> (raw)
In-Reply-To: <84r5c2hbpo.fsf@sauna.l.org>

Hi Timo,

> I agree that decoding ARM instruction in kernel space is really
> funky. Perhaps my best be would be to copy the old kernel code to my
> own userland tool and use PTRACE_POKETEXT to set breakpoints? The only
> drawbacks I see are:

You could copy the old code, but it may need updating to support ARMv7.
It also doesn't handle Thumb instructions as it stands.
 
> 1) I need more syscalls per instruction: PTRACE_GETREGS +
> PTRACE_SINGLESTEP vs. PTRACE_GETREGS + PTRACE_PEEKTEXT +
> PTRACE_POKETEXT * (number of potential branch targets) +
> PTRACE_CONTINUE but I guess I can live with this.

Ok.

> 2) itrace does not know where user helpers are. Parsing
> /proc/config.gz at runtime for CONFIG_VECTORS_BASE is probably not a
> good idea. If this location does not change often it is not a problem
> to hardcode it in itrace.
> 
> > GDB, for example, uses PTRACE_POKETEXT and PTRACE_PEEKTEXT to manage
> > breakpoints itself and does not require any kernel assistance.
> 
> I was going to say that GDB does not work either with user helpers but
> it seems that in
> 
> commit 52d6c8167d4e91d89bc5c26cf0bacc2200272f96
> Author: Julian Brown <julian@codesourcery.com>
> Date:   Thu Jul 30 23:05:00 2009 +0000
> 
> the function arm_catch_kernel_helper_return was added to GDB. They
> hard code 0xffff0000 but I guess that is ok?

I think it's always mapped at the high address if you have an MMU, so
you might need to detect the uclinux case.

Will

      reply	other threads:[~2011-01-24 16:18 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-19 15:07 [RFC][PATCH] ARM: ptrace: remove single-step emulation code Will Deacon
2011-01-19 15:19 ` Russell King - ARM Linux
2011-01-19 15:37   ` Will Deacon
2011-01-19 22:06     ` Arnaud Patard (Rtp)
2011-01-20  9:23       ` Will Deacon
2011-01-24  9:50 ` Timo Juhani Lindfors
2011-01-24 16:18   ` Will Deacon [this message]

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='000501cbbbe2$4fb55d00$ef201700$@deacon@arm.com' \
    --to=will.deacon@arm.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).