public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] call remote_check_symbols after attaching
@ 2014-07-11  9:21 Adrian Sendroiu
  2014-07-11 10:33 ` Pedro Alves
  2014-07-11 15:30 ` Tom Tromey
  0 siblings, 2 replies; 3+ messages in thread
From: Adrian Sendroiu @ 2014-07-11  9:21 UTC (permalink / raw)
  To: gdb-patches; +Cc: Adrian Sendroiu

When debugging a remote bare-metal target with
"target extended-remote" + attach, gdb won't send a qSymbol packet to initiate
symbol lookup. This happens because all the previous places in which gdb might
have done this are guarded by conditions that don't hold in the said scenario:
there are no shared libraries, no vsyscall page and the binary file didn't
change in the time passed between the "file" and the "attach" commands.

To solve this problem remote_check_symbols is called in the post_attach hook.

gdb:

2014-07-11  Adrian Sendroiu  <adrian.sendroiu@freescale.com>

	* remote.c: call remote_check_symbols after attaching
---
 gdb/remote.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gdb/remote.c b/gdb/remote.c
index 3aa030c..2c97b5d 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4484,6 +4484,19 @@ extended_remote_attach (struct target_ops *ops, const char *args, int from_tty)
   extended_remote_attach_1 (ops, args, from_tty);
 }
 
+/* Implementation of the to_post_attach method */
+
+static void
+extended_remote_post_attach (struct target_ops *ops, int pid)
+{
+  /* In certain cases gdb might not have had the chance to start symbol lookup
+     up until now. This could happen if the debugged binary is not using
+     shared libraries, the vsyscall page is not present and the binary itself
+     hadn't changed since the debugging process was started */
+  if (symfile_objfile != NULL)
+    remote_check_symbols();
+}
+
 \f
 /* Check for the availability of vCont.  This function should also check
    the response.  */
@@ -11530,6 +11543,7 @@ Specify the serial device it is connected to (e.g. /dev/ttya).";
   extended_remote_ops.to_mourn_inferior = extended_remote_mourn;
   extended_remote_ops.to_detach = extended_remote_detach;
   extended_remote_ops.to_attach = extended_remote_attach;
+  extended_remote_ops.to_post_attach = extended_remote_post_attach;
   extended_remote_ops.to_kill = extended_remote_kill;
   extended_remote_ops.to_supports_disable_randomization
     = extended_remote_supports_disable_randomization;
-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] call remote_check_symbols after attaching
  2014-07-11  9:21 [PATCH] call remote_check_symbols after attaching Adrian Sendroiu
@ 2014-07-11 10:33 ` Pedro Alves
  2014-07-11 15:30 ` Tom Tromey
  1 sibling, 0 replies; 3+ messages in thread
From: Pedro Alves @ 2014-07-11 10:33 UTC (permalink / raw)
  To: Adrian Sendroiu, gdb-patches

Hi Adrian,

On 07/11/2014 10:17 AM, Adrian Sendroiu wrote:
> When debugging a remote bare-metal target with
> "target extended-remote" + attach, gdb won't send a qSymbol packet to initiate
> symbol lookup. This happens because all the previous places in which gdb might
> have done this are guarded by conditions that don't hold in the said scenario:
> there are no shared libraries, no vsyscall page and the binary file didn't
> change in the time passed between the "file" and the "attach" commands.
> 
> To solve this problem remote_check_symbols is called in the post_attach hook.
> 
> gdb:
> 
> 2014-07-11  Adrian Sendroiu  <adrian.sendroiu@freescale.com>
> 
> 	* remote.c: call remote_check_symbols after attaching

This should list the "what": the new function, and the other
function that changed.  Entries should be full sentences starting
with capital letter and ending with a full stop.  E.g.,:

2014-07-11  Adrian Sendroiu  <adrian.sendroiu@freescale.com>

	* remote.c (extended_remote_post_attach): New function.
	(init_extended_remote_ops): Install it as to_post_attach method.

See the numerous examples in the ChangeLog file.

> +/* Implementation of the to_post_attach method */

Full stop and double space after period missing.

> +
> +static void
> +extended_remote_post_attach (struct target_ops *ops, int pid)
> +{
> +  /* In certain cases gdb might not have had the chance to start symbol lookup
> +     up until now. This could happen if the debugged binary is not using
> +     shared libraries, the vsyscall page is not present and the binary itself
> +     hadn't changed since the debugging process was started */

Likewise.

I went ahead and did these changes (and similar to the git log entry)
for you, and pushed the patch in, as below.

Thanks!

--------------------
From b9c1d481cc639a9c1f31aea164f8716a85edd89f Mon Sep 17 00:00:00 2001
From: Adrian Sendroiu <adrian.sendroiu@freescale.com>
Date: Fri, 11 Jul 2014 10:51:48 +0100
Subject: [PATCH] remote: call remote_check_symbols after attaching

When debugging a remote bare-metal target with "target
extended-remote" + attach, GDB won't send a qSymbol packet to initiate
symbol lookup.  This happens because all the previous places in which
GDB might have done this are guarded by conditions that don't hold in
the said scenario: there are no shared libraries, no vsyscall page and
the binary file didn't change in the time passed between the "file"
and the "attach" commands.

To solve this problem remote_check_symbols is called in the
target_post_attach hook.

gdb/
2014-07-11  Adrian Sendroiu  <adrian.sendroiu@freescale.com>

	* remote.c (extended_remote_post_attach): New function.
	(init_extended_remote_ops): Install it as to_post_attach method.
---
 gdb/ChangeLog |  5 +++++
 gdb/remote.c  | 15 +++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 56f2909..9aea5a9 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2014-07-11  Adrian Sendroiu  <adrian.sendroiu@freescale.com>
+
+	* remote.c (extended_remote_post_attach): New function.
+	(init_extended_remote_ops): Install it as to_post_attach method.
+
 2014-07-09  Pedro Alves  <palves@redhat.com>
 
 	* infcmd.c (attach_command_post_wait): Don't call
diff --git a/gdb/remote.c b/gdb/remote.c
index 3aa030c..76efefa 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4484,6 +4484,20 @@ extended_remote_attach (struct target_ops *ops, const char *args, int from_tty)
   extended_remote_attach_1 (ops, args, from_tty);
 }
 
+/* Implementation of the to_post_attach method.  */
+
+static void
+extended_remote_post_attach (struct target_ops *ops, int pid)
+{
+  /* In certain cases GDB might not have had the chance to start
+     symbol lookup up until now.  This could happen if the debugged
+     binary is not using shared libraries, the vsyscall page is not
+     present (on Linux) and the binary itself hadn't changed since the
+     debugging process was started.  */
+  if (symfile_objfile != NULL)
+    remote_check_symbols();
+}
+
 \f
 /* Check for the availability of vCont.  This function should also check
    the response.  */
@@ -11530,6 +11544,7 @@ Specify the serial device it is connected to (e.g. /dev/ttya).";
   extended_remote_ops.to_mourn_inferior = extended_remote_mourn;
   extended_remote_ops.to_detach = extended_remote_detach;
   extended_remote_ops.to_attach = extended_remote_attach;
+  extended_remote_ops.to_post_attach = extended_remote_post_attach;
   extended_remote_ops.to_kill = extended_remote_kill;
   extended_remote_ops.to_supports_disable_randomization
     = extended_remote_supports_disable_randomization;
-- 
1.9.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] call remote_check_symbols after attaching
  2014-07-11  9:21 [PATCH] call remote_check_symbols after attaching Adrian Sendroiu
  2014-07-11 10:33 ` Pedro Alves
@ 2014-07-11 15:30 ` Tom Tromey
  1 sibling, 0 replies; 3+ messages in thread
From: Tom Tromey @ 2014-07-11 15:30 UTC (permalink / raw)
  To: Adrian Sendroiu; +Cc: gdb-patches

>>>>> "Adrian" == Adrian Sendroiu <adrian.sendroiu@freescale.com> writes:

One little nit here --

Adrian> +  if (symfile_objfile != NULL)
Adrian> +    remote_check_symbols();

GNU style puts a space before the "(".

Tom

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-07-11 15:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-11  9:21 [PATCH] call remote_check_symbols after attaching Adrian Sendroiu
2014-07-11 10:33 ` Pedro Alves
2014-07-11 15:30 ` Tom Tromey

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 read-only IMAP folder(s) and NNTP newsgroup(s).