From: ppluzhnikov@google.com (Paul Pluzhnikov)
To: gdb-patches@sourceware.org
Cc: ppluzhnikov@google.com
Subject: [patch] Add "debug jit" for easier tracing of JIT support internals
Date: Wed, 05 Jan 2011 19:36:00 -0000 [thread overview]
Message-ID: <20110105193621.A8CBF190B3A@elbrus2.mtv.corp.google.com> (raw)
Greetings,
This is on the rather obvious side ...
Thanks,
--
Paul Pluzhnikov
2010-01-05 Paul Pluzhnikov <ppluzhnikov@google.com>
* jit.c (jit_debug): New variable.
(show_jit_debug): New function.
(jit_register_code, jit_inferior_init): Add debug output.
(_initialize_jit): Register "debug jit" command.
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 19:35:32 -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
@@ -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 = %zu\n",
+ paddress (gdbarch, code_entry->symfile_addr),
+ 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,15 @@ 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. Higher numbers are more\n\
+verbose."),
+ 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 ();
next reply other threads:[~2011-01-05 19:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-05 19:36 Paul Pluzhnikov [this message]
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
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=20110105193621.A8CBF190B3A@elbrus2.mtv.corp.google.com \
--to=ppluzhnikov@google.com \
--cc=gdb-patches@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