gdb: make jit.c use the inferior_created inferior parameter

Use the inferior parameter now available in jit_inferior_created_hook.
It is passed down to jit_inferior_init, which uses it as much as
possible instead of the current inferior or current program space.

gdb/ChangeLog:

	* jit.c (jit_reader_load_command): Pass current inferior.
	(jit_inferior_init): Change parameter type to inferior, use it.
	(jit_inferior_created): Remove.
	(jit_inferior_created_hook): Pass inferior parameter down.
	(_initialize_jit): Use jit_inferior_created_hook instead of
	jit_inferior_created.
	* jit.h (jit_inferior_created_hook): Add inferior parameter.
	* infrun.c (follow_exec): Pass inferior to
	jit_inferior_created_hook.

Change-Id: If3a2114a933370dd313d5abd623136d273cdb8fa
This commit is contained in:
Simon Marchi 2020-10-24 22:59:51 -04:00
parent 3f66685e9e
commit 324956617c
4 changed files with 25 additions and 19 deletions

View file

@ -49,7 +49,6 @@ static const char jit_break_name[] = "__jit_debug_register_code";
static const char jit_descriptor_name[] = "__jit_debug_descriptor";
static void jit_inferior_init (struct gdbarch *gdbarch);
static void jit_inferior_exit_hook (struct inferior *inf);
/* An unwinder is registered for every gdbarch. This key is used to
@ -221,7 +220,7 @@ jit_reader_load_command (const char *args, int from_tty)
loaded_jit_reader = jit_reader_load (file.get ());
reinit_frame_cache ();
jit_inferior_created_hook ();
jit_inferior_created_hook (current_inferior ());
}
/* Provides the jit-reader-unload command. */
@ -1178,20 +1177,22 @@ jit_prepend_unwinder (struct gdbarch *gdbarch)
/* Register any already created translations. */
static void
jit_inferior_init (struct gdbarch *gdbarch)
jit_inferior_init (inferior *inf)
{
struct jit_descriptor descriptor;
struct jit_code_entry cur_entry;
CORE_ADDR cur_entry_addr;
struct gdbarch *gdbarch = inf->gdbarch;
program_space *pspace = inf->pspace;
if (jit_debug)
fprintf_unfiltered (gdb_stdlog, "jit_inferior_init\n");
jit_prepend_unwinder (gdbarch);
jit_breakpoint_re_set_internal (gdbarch, current_program_space);
jit_breakpoint_re_set_internal (gdbarch, pspace);
for (objfile *jiter : current_program_space->objfiles ())
for (objfile *jiter : pspace->objfiles ())
{
if (jiter->jiter_data == nullptr)
continue;
@ -1229,20 +1230,12 @@ jit_inferior_init (struct gdbarch *gdbarch)
}
}
/* inferior_created observer. */
static void
jit_inferior_created (inferior *inf)
{
jit_inferior_created_hook ();
}
/* Exported routine to call when an inferior has been created. */
/* See jit.h. */
void
jit_inferior_created_hook (void)
jit_inferior_created_hook (inferior *inf)
{
jit_inferior_init (target_gdbarch ());
jit_inferior_init (inf);
}
/* Exported routine to call to re-set the jit breakpoints,
@ -1343,7 +1336,7 @@ _initialize_jit ()
show_jit_debug,
&setdebuglist, &showdebuglist);
gdb::observers::inferior_created.attach (jit_inferior_created);
gdb::observers::inferior_created.attach (jit_inferior_created_hook);
gdb::observers::inferior_exit.attach (jit_inferior_exit_hook);
gdb::observers::breakpoint_deleted.attach (jit_breakpoint_deleted);