Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joakim Tjernlund <joakim.tjernlund@transmode.se>
To: Pedro Alves <palves@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] remote: Avoid unwanted shlib internal BPs When debugging Linux kernel or u-boot with Abatron BDI emulator an error occurs:
Date: Fri, 01 Jun 2012 14:39:00 -0000	[thread overview]
Message-ID: <OF3AAFEC4B.204A4D0F-ONC1257A10.004FA84E-C1257A10.0050789B@transmode.se> (raw)
In-Reply-To: <4FC8CCD7.9060800@redhat.com>

Pedro Alves <palves@redhat.com> wrote on 2012/06/01 16:08:23:
>
> On 06/01/2012 02:36 PM, Joakim Tjernlund wrote:
>
> > ..
> > (gdb) tar remote bdi:2001
> > Remote debugging using bdi:2001
> > 0xeff80050 in ?? ()
> > (gdb) mon reset
> > (gdb) cont
> > Continuing.
> > Warning:
> > Cannot insert breakpoint -1.
> > Error accessing memory address 0xc0000000: Unknown error 4294967295.
> >
> > (gdb) maintenance info breakpoints
> > Num     Type           Disp Enb Address    What
> > -1      shlib events   keep y   0xc0000000 <_stext> inf 1
> >
> > gdb mistakenly inserts a special shared library BP even though
> > there area no such libs in either linux or u-boot.
>
>
> GDB has no special knowledge of the Linux kernel, nor of u-boot.
> A GNU/Linux targeted GDB (*-*-linux-gnu) recognizes, and knows how to
> debug user space applications.  If the kernel binary or the u-boot binary
> look very much like GNU/Linux user space programs, the *-*-linux-gnu targeted
> GDB will assume that's what they are.  If you used a bare metal elf/eabi
> targeted GDB, which is really what those programs are, you'd not see this.

Yes you would, the error comes from this in solibsvr4.c:
static const char * const bkpt_names[] =
{
  "_start",
  "__start",
  "main",
  NULL
};

...

 if (!current_inferior ()->attach_flag)
    {
      for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++)
	{
	  msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile);
	  if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0))
	    {
	      sym_addr = SYMBOL_VALUE_ADDRESS (msymbol);
	      sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch,
							     sym_addr,
							     &current_target);
	      create_solib_event_breakpoint (target_gdbarch, sym_addr);
	      return 1;
	    }
	}
    }

Just because a executable has a _start/__start/main in it, it doesn't  mean it uses
shared libs. I think this code assumes way too much, it is a last resort if everything
else fails.
The code tries to avoid attached targets but fails because it isn't attached yet

>
> > Fix this by explicitly informing remote_add_inferior() that
> > the remote is attached.
>
>
> NAK.  This is not a "fix", it's papering over the problem, and
> regresses GDB.  It makes GDB always detach on quit, instead of asking
> the remote end whether it is "attached" or whether it has "spawned"
> the inferior.

OK, that is fine. I don't know this code. Any suggestion ?


  reply	other threads:[~2012-06-01 14:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-01 13:37 Joakim Tjernlund
2012-06-01 14:08 ` Pedro Alves
2012-06-01 14:39   ` Joakim Tjernlund [this message]
2012-06-01 14:40     ` Pedro Alves
2012-06-01 14:48       ` Joakim Tjernlund
     [not found]       ` <OF322378AB.B2F2176F-ONC1257A10.0051062C-C1257A10.00514CCD@LocalDomain>
2012-06-01 14:49         ` Joakim Tjernlund
2012-06-01 14:53       ` Joakim Tjernlund
2012-06-01 14:56         ` Pedro Alves
2012-06-01 15:01           ` Joakim Tjernlund

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=OF3AAFEC4B.204A4D0F-ONC1257A10.004FA84E-C1257A10.0050789B@transmode.se \
    --to=joakim.tjernlund@transmode.se \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.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