gdb: make jit.c use the inferior_created inferior parameter
authorSimon Marchi <simon.marchi@polymtl.ca>
Sun, 25 Oct 2020 02:59:51 +0000 (22:59 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sun, 25 Oct 2020 13:06:09 +0000 (09:06 -0400)
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

gdb/ChangeLog
gdb/infrun.c
gdb/jit.c
gdb/jit.h

index af9d5abbe69d1244b4c28ffb274dbc900178842f..c1a92bb7bd51abc2592c66c33f390b66f904bd8d 100644 (file)
@@ -1,3 +1,15 @@
+2020-10-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * 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.
+
 2020-10-24  Simon Marchi  <simon.marchi@efficios.com>
 
        * linux-thread-db.c (check_pid_namespace_match): Add inferior
index c2acea65982bd08ffc73dd4fd8e60362cc39e5f5..5a6ff165802ce688c0d8641af4be6d5ac554890b 100644 (file)
@@ -1236,7 +1236,7 @@ follow_exec (ptid_t ptid, const char *exec_file_target)
 
   solib_create_inferior_hook (0);
 
-  jit_inferior_created_hook ();
+  jit_inferior_created_hook (inf);
 
   breakpoint_re_set ();
 
index 6f1f7e69d5e5c1eae52f17e0b156d5f0fca951ce..fd24d539159635e312b82ddfc54620f0831de72a 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -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);
 
index 739a8f30e2c61092d8453f27d98c4ad524267846..6f972a6e077afcff6e5a6dd5414e9d1b4e1605d8 100644 (file)
--- a/gdb/jit.h
+++ b/gdb/jit.h
@@ -20,6 +20,7 @@
 #ifndef JIT_H
 #define JIT_H
 
+struct inferior;
 struct objfile;
 struct minimal_symbol;
 
@@ -107,7 +108,7 @@ struct jited_objfile_data
    already JITed code.  If it has already found the symbols, then it
    doesn't try again.  */
 
-extern void jit_inferior_created_hook (void);
+extern void jit_inferior_created_hook (inferior *inf);
 
 /* Re-establish the jit breakpoint(s).  */