Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Paul Pluzhnikov <ppluzhnikov@google.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org, Doug Evans <dje@google.com>
Subject: Re: [patch] Add "debug jit" for easier tracing of JIT support internals
Date: Wed, 05 Jan 2011 23:49:00 -0000	[thread overview]
Message-ID: <AANLkTinLfsuAPzyFfqdt7-=wR0_BG_CGpGSaSkHAq+rF@mail.gmail.com> (raw)
In-Reply-To: <201101052328.00646.pedro@codesourcery.com>

[-- Attachment #1: Type: text/plain, Size: 791 bytes --]

On Wed, Jan 5, 2011 at 3:28 PM, Pedro Alves <pedro@codesourcery.com> wrote:

> I don't see why making that uint64_t be a ULONGEST would be a problem.

Done.

This exposed a bug -- bfd_open_from_target_memory() had size_t where
ULONGEST was intended.

Thanks,

-- 
Paul Pluzhnikov


2010-01-05  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* jit.h (struct jit_code_entry): use ULONGEST for symfile_size.
	* jit.c (jit_debug): New variable.
	(show_jit_debug): New function.
	(struct target_buffer): Use ULONGEST.
	(bfd_open_from_target_memory): Likewise.
	(jit_register_code, jit_inferior_init): Add debug output.
	(_initialize_jit): Register "debug jit" command.


doc/ChangeLog:

2010-01-05  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* gdb.texi (Debugging Output): Document "set debug jit"

[-- Attachment #2: gdb-jit-debug-20110105-4.txt --]
[-- Type: text/plain, Size: 5166 bytes --]

Index: jit.h
===================================================================
RCS file: /cvs/src/src/gdb/jit.h,v
retrieving revision 1.4
diff -u -p -r1.4 jit.h
--- jit.h	1 Jan 2011 15:33:09 -0000	1.4
+++ jit.h	5 Jan 2011 23:41:17 -0000
@@ -42,7 +42,7 @@ struct jit_code_entry
   CORE_ADDR next_entry;
   CORE_ADDR prev_entry;
   CORE_ADDR symfile_addr;
-  uint64_t symfile_size;
+  ULONGEST symfile_size;
 };
 
 /* This is the global descriptor that the inferior uses to communicate
Index: jit.c
===================================================================
RCS file: /cvs/src/src/gdb/jit.c,v
retrieving revision 1.8
diff -u -p -r1.8 jit.c
--- jit.c	1 Jan 2011 15:33:09 -0000	1.8
+++ jit.c	5 Jan 2011 23:41:17 -0000
@@ -21,6 +21,8 @@
 
 #include "jit.h"
 #include "breakpoint.h"
+#include "command.h"
+#include "gdbcmd.h"
 #include "gdbcore.h"
 #include "observer.h"
 #include "objfiles.h"
@@ -48,6 +50,17 @@ static CORE_ADDR jit_descriptor_addr = 0
 
 static int registering_code = 0;
 
+/* Non-zero if we want to see trace of jit level stuff.  */
+
+static int jit_debug = 0;
+
+static void
+show_jit_debug (struct ui_file *file, int from_tty,
+		struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file, _("JIT debugging is %s.\n"), value);
+}
+
 /* Helper cleanup function to clear an integer flag like the one above.  */
 
 static void
@@ -59,7 +72,7 @@ clear_int (void *int_addr)
 struct target_buffer
 {
   CORE_ADDR base;
-  size_t size;
+  ULONGEST size;
 };
 
 /* Openning the file is a no-op.  */
@@ -118,7 +131,7 @@ mem_bfd_iovec_stat (struct bfd *abfd, vo
 /* Open a BFD from the target's memory.  */
 
 static struct bfd *
-bfd_open_from_target_memory (CORE_ADDR addr, size_t size, char *target)
+bfd_open_from_target_memory (CORE_ADDR addr, ULONGEST size, char *target)
 {
   const char *filename = xstrdup ("<in-memory>");
   struct target_buffer *buffer = xmalloc (sizeof (struct target_buffer));
@@ -219,6 +232,13 @@ jit_register_code (struct gdbarch *gdbar
   const struct bfd_arch_info *b;
   CORE_ADDR *entry_addr_ptr;
 
+  if (jit_debug)
+    fprintf_unfiltered (gdb_stdlog,
+			"jit_register_code, symfile_addr = %s, "
+			"symfile_size = %s\n",
+			paddress (gdbarch, code_entry->symfile_addr),
+			pulongest (code_entry->symfile_size));
+
   nbfd = bfd_open_from_target_memory (code_entry->symfile_addr,
                                       code_entry->symfile_size, gnutarget);
   old_cleanups = make_cleanup_bfd_close (nbfd);
@@ -314,6 +334,11 @@ jit_inferior_init (struct gdbarch *gdbar
   struct jit_code_entry cur_entry;
   CORE_ADDR cur_entry_addr;
 
+  if (jit_debug)
+    fprintf_unfiltered (gdb_stdlog,
+			"jit_inferior_init, registering_code = %d\n",
+			registering_code);
+
   /* When we register code, GDB resets its breakpoints in case symbols have
      changed.  That in turn calls this handler, which makes us look for new
      code again.  To avoid being re-entered, we check this flag.  */
@@ -329,6 +354,10 @@ jit_inferior_init (struct gdbarch *gdbar
   if (reg_addr == 0)
     return;
 
+  if (jit_debug)
+    fprintf_unfiltered (gdb_stdlog, "jit_inferior_init, reg_addr = %s\n",
+			paddress (gdbarch, reg_addr));
+
   /* Lookup the descriptor symbol and cache the addr.  If it is missing, we
      assume we are not attached to a JIT and return early.  */
   desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL, NULL);
@@ -338,6 +367,11 @@ jit_inferior_init (struct gdbarch *gdbar
   if (jit_descriptor_addr == 0)
     return;
 
+  if (jit_debug)
+    fprintf_unfiltered (gdb_stdlog,
+			"jit_inferior_init, jit_descriptor_addr = %s\n",
+			paddress (gdbarch, jit_descriptor_addr));
+
   /* Read the descriptor so we can check the version number and load any already
      JITed functions.  */
   jit_read_descriptor (gdbarch, &descriptor);
@@ -453,6 +487,14 @@ extern void _initialize_jit (void);
 void
 _initialize_jit (void)
 {
+  add_setshow_zinteger_cmd ("jit", class_maintenance, &jit_debug, _("\
+Set JIT debugging."), _("\
+Show JIT debugging."), _("\
+When non-zero, JIT debugging is enabled."),
+			    NULL,
+			    show_jit_debug,
+			    &setdebuglist, &showdebuglist);
+
   observer_attach_inferior_created (jit_inferior_created_observer);
   observer_attach_inferior_exit (jit_inferior_exit_hook);
   jit_objfile_data = register_objfile_data ();
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.783
diff -u -p -r1.783 gdb.texinfo
--- doc/gdb.texinfo	5 Jan 2011 05:09:52 -0000	1.783
+++ doc/gdb.texinfo	5 Jan 2011 23:41:18 -0000
@@ -19955,6 +19955,11 @@ The default is off.  @file{infrun.c} con
 for implementing operations such as single-stepping the inferior.
 @item show debug infrun
 Displays the current state of @value{GDBN} inferior debugging.
+@item set debug jit
+@cindex just-in-time compilation
+Turns on or off debugging messages from JIT debug support.
+@item show debug jit
+Displays the current state of @value{GDBN} JIT debugging.
 @item set debug lin-lwp
 @cindex @sc{gnu}/Linux LWP debug messages
 @cindex Linux lightweight processes

  reply	other threads:[~2011-01-05 23:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-05 19:36 Paul Pluzhnikov
2011-01-05 20:02 ` Doug Evans
2011-01-05 22:57   ` Pedro Alves
2011-01-05 23:16     ` Paul Pluzhnikov
2011-01-05 23:28       ` Pedro Alves
2011-01-05 23:49         ` Paul Pluzhnikov [this message]
2011-01-06  0:45           ` Pedro Alves
2011-01-06  1:09             ` Paul Pluzhnikov
2011-01-06  4:14               ` Eli Zaretskii
2011-01-05 23:26     ` Doug Evans
2011-01-05 23:34       ` Pedro Alves
2011-01-06 19:45         ` Tom Tromey
2011-01-06 19:52           ` Paul Pluzhnikov
2011-01-05 20:57 ` Eli Zaretskii
2011-01-05 21:53   ` Paul Pluzhnikov
2011-01-05 22:51     ` Pedro Alves
2011-01-06  4:00     ` Eli Zaretskii

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='AANLkTinLfsuAPzyFfqdt7-=wR0_BG_CGpGSaSkHAq+rF@mail.gmail.com' \
    --to=ppluzhnikov@google.com \
    --cc=dje@google.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@codesourcery.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