gdb: add field::name / field::set_name
[binutils-gdb.git] / gdb / jit.c
index 1de785b8de08c0e679fe51e2efe1fadff4e68571..666262e2a05229b6e55dfbcff8d7b15449335291 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -74,6 +74,30 @@ show_jit_debug (struct ui_file *file, int from_tty,
   fprintf_filtered (file, _("JIT debugging is %s.\n"), value);
 }
 
+/* Implementation of the "maintenance info jit" command.  */
+
+static void
+maint_info_jit_cmd (const char *args, int from_tty)
+{
+  inferior *inf = current_inferior ();
+  bool printed_header = false;
+
+  /* Print a line for each JIT-ed objfile.  */
+  for (objfile *obj : inf->pspace->objfiles ())
+    {
+      if (obj->jited_data == nullptr)
+       continue;
+
+      if (!printed_header)
+       {
+         printf_filtered ("Base address of known JIT-ed objfiles:\n");
+         printed_header = true;
+       }
+
+      printf_filtered ("  %s\n", paddress (obj->arch (), obj->jited_data->addr));
+    }
+}
+
 struct jit_reader
 {
   jit_reader (struct gdb_reader_funcs *f, gdb_dlhandle_up &&h)
@@ -1048,6 +1072,7 @@ jit_frame_prev_register (struct frame_info *this_frame, void **cache, int reg)
 
 static const struct frame_unwind jit_frame_unwind =
 {
+  "jit",
   NORMAL_FRAME,
   default_frame_unwind_stop_reason,
   jit_frame_this_id,
@@ -1247,6 +1272,10 @@ _initialize_jit ()
                           show_jit_debug,
                           &setdebuglist, &showdebuglist);
 
+  add_cmd ("jit", class_maintenance, maint_info_jit_cmd,
+          _("Print information about JIT-ed code objects."),
+          &maintenanceinfolist);
+
   gdb::observers::inferior_created.attach (jit_inferior_created_hook, "jit");
   gdb::observers::inferior_execd.attach (jit_inferior_created_hook, "jit");
   gdb::observers::inferior_exit.attach (jit_inferior_exit_hook, "jit");