Allow Python notification of new object-file loadings.
[deliverable/binutils-gdb.git] / gdb / python / py-inferior.c
index 275caea8ba716f487e8f776a4ff65d7307c2df18..afc3eb0c995d22ce732bf39173cc7f19131d9e9c 100644 (file)
@@ -22,6 +22,7 @@
 #include "gdbcore.h"
 #include "gdbthread.h"
 #include "inferior.h"
+#include "objfiles.h"
 #include "observer.h"
 #include "python-internal.h"
 #include "arch-utils.h"
@@ -125,6 +126,25 @@ python_inferior_exit (struct inferior *inf)
   do_cleanups (cleanup);
 }
 
+/* Callback used to notify Python listeners about new objfiles loaded in the
+   inferior.  */
+
+static void
+python_new_objfile (struct objfile *objfile)
+{
+  struct cleanup *cleanup;
+
+  if (objfile == NULL)
+    return;
+
+  cleanup = ensure_python_env (get_objfile_arch (objfile), current_language);
+
+  if (emit_new_objfile_event (objfile) < 0)
+    gdbpy_print_stack ();
+
+  do_cleanups (cleanup);
+}
+
 /* Return a reference to the Python object of type Inferior
    representing INFERIOR.  If the object has already been created,
    return it and increment the reference count,  otherwise, create it.
@@ -715,6 +735,7 @@ gdbpy_initialize_inferior (void)
   observer_attach_normal_stop (python_on_normal_stop);
   observer_attach_target_resumed (python_on_resume);
   observer_attach_inferior_exit (python_inferior_exit);
+  observer_attach_new_objfile (python_new_objfile);
 
   membuf_object_type.tp_new = PyType_GenericNew;
   if (PyType_Ready (&membuf_object_type) < 0)
This page took 0.023396 seconds and 4 git commands to generate.