Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Paul Blacquiere <blacq@slingshot.co.nz>
Cc: "gdb@sourceware.org" <gdb@sourceware.org>
Subject: Re: Howto single step from beginning
Date: Thu, 02 Feb 2006 02:57:00 -0000	[thread overview]
Message-ID: <20060202025704.GA21125@nevyn.them.org> (raw)
In-Reply-To: <20060202155252.k84sosswgkwkwsg4@webmail.slingshot.co.nz>

On Thu, Feb 02, 2006 at 03:52:52PM +1300, Paul Blacquiere wrote:
> Hi,
> 
> >Sorry, but I don't understand what you mean.  You'd have to show a
> >complete example.
> 
> This is the beginning of the prog to debug (ARM) :
> 
> 00008090 <_start>:
>     8090:       e3a0b000        mov     fp, #0  ; 0x0
>     8094:       e3a0e000        mov     lr, #0  ; 0x0
>     8098:       e49d1004        ldr     r1, [sp], #4
>     809c:       e1a0200d        mov     r2, sp
>     80a0:       e52d2004        str     r2, [sp, #-4]!
>     80a4:       e52d0004        str     r0, [sp, #-4]!
> 
> 
> start gdb:
> $> gdb test
> 
> attempt to run:
> --------------------------------
> (gdb) run
> Starting program: /home/blacq/src/bin/test
> 
> Program received signal SIGILL, Illegal instruction.
> 0x00008094 in _start ()
> (gdb)
> --------------------------------
> (by now you are muttering, not this old chestnut again...)
> 
> So I would like to investigate the CPSR etc before and after, as the command
> (mov     lr, #0  ; 0x0) looks good to me.
> 
> trying the following:
> --------------------------------
> (gdb) break _start
> Breakpoint 1 at 0x8090
> (gdb) run
> Starting program: /home/blacq/src/bin/test
> 
> Program received signal SIGILL, Illegal instruction.
> 0x00008094 in _start ()
> (gdb)
> --------------------------------
> 
> So at this point I am stumped.

OK, I've got two things for you.

First, assuming that this is a dynamically linked application, try
"set stop-on-solib-events 1".  That'll stop you way back in the dynamic
linker.  From there you may be able to single-step to _start; it gets
called from something like _dl_start_user.

Secondly, does it work outside of GDB?  If so, I'd suspect that the
breakpoint GDB has invisibly placed at _start (which it always does)
is causing SIGILL instead of SIGTRAP.  There was some change in this
area for ARM/Linux recently.  If your kernel is too old, perhaps
GDB is using a breakpoint that it doesn't support.  Or maybe it's GDB
that's too old.  Check with "set debug target 1" before running to see
what bytes it's inserting, then check your kernel sources (esp.
arm/kernel/ptrace.c and arm/kernel/traps.c) to see which breakpoints
it expects.

-- 
Daniel Jacobowitz
CodeSourcery


  reply	other threads:[~2006-02-02  2:57 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-02  1:08 Paul Blacquiere
2006-02-02  1:26 ` Daniel Jacobowitz
2006-02-02  2:52   ` Paul Blacquiere
2006-02-02  2:57     ` Daniel Jacobowitz [this message]
2006-02-02  3:20       ` Paul Blacquiere
2006-02-02  4:45       ` Paul Blacquiere
2006-02-02  5:07         ` Daniel Jacobowitz
2006-02-02  5:29           ` Paul Blacquiere
2006-02-02 13:52             ` Daniel Jacobowitz
2006-02-03  0:09               ` Paul Blacquiere

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=20060202025704.GA21125@nevyn.them.org \
    --to=drow@false.org \
    --cc=blacq@slingshot.co.nz \
    --cc=gdb@sourceware.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