From: Doug Evans <dje@google.com>
To: Paul Pluzhnikov <ppluzhnikov@google.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [patch] Add "debug jit" for easier tracing of JIT support internals
Date: Wed, 05 Jan 2011 20:02:00 -0000 [thread overview]
Message-ID: <AANLkTiks2fAEGXVwBxbOJZYaGmVLGPKHdrQ0fdM=ELDn@mail.gmail.com> (raw)
In-Reply-To: <20110105193621.A8CBF190B3A@elbrus2.mtv.corp.google.com>
On Wed, Jan 5, 2011 at 11:36 AM, Paul Pluzhnikov <ppluzhnikov@google.com> wrote:
> 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 ();
>
"works for me".
I'd suggest removing "Higher numbers are more verbose."
and while I haven't tried it, I wonder if show_jit_debug is necessary
(bummer if it is, we should fix that).
next prev parent reply other threads:[~2011-01-05 20:02 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 [this message]
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='AANLkTiks2fAEGXVwBxbOJZYaGmVLGPKHdrQ0fdM=ELDn@mail.gmail.com' \
--to=dje@google.com \
--cc=gdb-patches@sourceware.org \
--cc=ppluzhnikov@google.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