Ejemplo n.º 1
0
int
emit_new_objfile_event (struct objfile *objfile)
{
  if (evregpy_no_listeners_p (gdb_py_events.new_objfile))
    return 0;

  gdbpy_ref<> event = create_new_objfile_event_object (objfile);
  if (event != NULL)
    return evpy_emit_event (event.get (), gdb_py_events.new_objfile);
  return -1;
}
Ejemplo n.º 2
0
int
emit_clear_objfiles_event (void)
{
  if (evregpy_no_listeners_p (gdb_py_events.clear_objfiles))
    return 0;

  gdbpy_ref<> event = create_clear_objfiles_event_object ();
  if (event != NULL)
    return evpy_emit_event (event.get (), gdb_py_events.clear_objfiles);
  return -1;
}
Ejemplo n.º 3
0
int
emit_continue_event (ptid_t ptid)
{
  if (evregpy_no_listeners_p (gdb_py_events.cont))
    return 0;

  gdbpy_ref<> event = create_continue_event_object (ptid);
  if (event != NULL)
    return evpy_emit_event (event.get (), gdb_py_events.cont);
  return -1;
}
Ejemplo n.º 4
0
int
emit_continue_event (ptid_t ptid)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.cont))
    return 0;

  event = create_continue_event_object ();
  if (event)
    return evpy_emit_event (event, gdb_py_events.cont);
  return -1;
}
Ejemplo n.º 5
0
int
emit_new_objfile_event (struct objfile *objfile)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.new_objfile))
    return 0;

  event = create_new_objfile_event_object (objfile);
  if (event)
    return evpy_emit_event (event, gdb_py_events.new_objfile);
  return -1;
}
Ejemplo n.º 6
0
int
emit_clear_objfiles_event (void)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.clear_objfiles))
    return 0;

  event = create_clear_objfiles_event_object ();
  if (event)
    return evpy_emit_event (event, gdb_py_events.clear_objfiles);
  return -1;
}
Ejemplo n.º 7
0
int
emit_register_changed_event (struct frame_info* frame, int regnum)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.register_changed))
    return 0;

  event = create_register_changed_event_object (frame, regnum);
  if (event != NULL)
    return evpy_emit_event (event, gdb_py_events.register_changed);
  return -1;
}
Ejemplo n.º 8
0
int
emit_memory_changed_event (CORE_ADDR addr, ssize_t len)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.memory_changed))
    return 0;

  event = create_memory_changed_event_object (addr, len);
  if (event != NULL)
    return evpy_emit_event (event, gdb_py_events.memory_changed);
  return -1;
}
Ejemplo n.º 9
0
int
emit_exited_event (const LONGEST *exit_code, struct inferior *inf)
{
  if (evregpy_no_listeners_p (gdb_py_events.exited))
    return 0;

  gdbpy_ref<> event (create_exited_event_object (exit_code, inf));

  if (event != NULL)
    return evpy_emit_event (event.get (), gdb_py_events.exited);

  return -1;
}
Ejemplo n.º 10
0
int
emit_inferior_call_event (inferior_call_kind flag, ptid_t thread,
			  CORE_ADDR addr)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.inferior_call))
    return 0;

  event = create_inferior_call_event_object (flag, thread, addr);
  if (event != NULL)
    return evpy_emit_event (event, gdb_py_events.inferior_call);
  return -1;
}
Ejemplo n.º 11
0
int
emit_exited_event (const LONGEST *exit_code, struct inferior *inf)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.exited))
    return 0;

  event = create_exited_event_object (exit_code, inf);

  if (event)
    return evpy_emit_event (event, gdb_py_events.exited);

  return -1;
}
Ejemplo n.º 12
0
int
emit_solib_about_to_search (struct inferior *inf)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.solib_about_to_search))
    return 0;

  event = create_solib_about_to_search_event_object (inf);

  if (event)
    return evpy_emit_event (event, gdb_py_events.solib_about_to_search);

  return -1;
}
Ejemplo n.º 13
0
int
emit_inferior_appeared (struct inferior *inf)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.inferior_appeared))
    return 0;

  event = create_inferior_appeared_event_object (inf);

  if (event)
    return evpy_emit_event (event, gdb_py_events.inferior_appeared);

  return -1;

}
Ejemplo n.º 14
0
int
emit_stop_event (struct bpstats *bs, enum target_signal stop_signal)
{
  PyObject *stop_event_obj = NULL; /* Appease GCC warning.  */

  if (evregpy_no_listeners_p (gdb_py_events.stop))
    return 0;

  if (bs && bs->breakpoint_at
      && bs->breakpoint_at->py_bp_object)
    {
      stop_event_obj = create_breakpoint_event_object ((PyObject *) bs
                                                       ->breakpoint_at
                                                       ->py_bp_object);
      if (!stop_event_obj)
	goto fail;
    }

  /* Check if the signal is "Signal 0" or "Trace/breakpoint trap".  */
  if (stop_signal != TARGET_SIGNAL_0
      && stop_signal != TARGET_SIGNAL_TRAP)
    {
      stop_event_obj =
	  create_signal_event_object (stop_signal);
      if (!stop_event_obj)
	goto fail;
    }

  /* If all fails emit an unknown stop event.  All event types should
     be known and this should eventually be unused.  */
  if (!stop_event_obj)
    {
      stop_event_obj = create_stop_event_object (&stop_event_object_type);
      if (!stop_event_obj)
	goto fail;
    }

  return evpy_emit_event (stop_event_obj, gdb_py_events.stop);

  fail:
   return -1;
}
Ejemplo n.º 15
0
int
emit_stop_event (struct bpstats *bs, enum gdb_signal stop_signal)
{
  PyObject *stop_event_obj = NULL; /* Appease GCC warning.  */
  PyObject *list = NULL;
  PyObject *first_bp = NULL;
  struct bpstats *current_bs;

  if (evregpy_no_listeners_p (gdb_py_events.stop))
    return 0;

  /* Add any breakpoint set at this location to the list.  */
  for (current_bs = bs; current_bs != NULL; current_bs = current_bs->next)
    {
      if (current_bs->breakpoint_at
          && current_bs->breakpoint_at->py_bp_object)
        {
          PyObject *current_py_bp =
              (PyObject *) current_bs->breakpoint_at->py_bp_object;

          if (list == NULL)
            {
              list = PyList_New (0);
              if (!list)
                goto fail;
            }

          if (PyList_Append (list, current_py_bp))
            goto fail;

          if (first_bp == NULL)
            first_bp = current_py_bp;
        }
    }

  if (list != NULL)
    {
      stop_event_obj = create_breakpoint_event_object (list, first_bp);
      if (!stop_event_obj)
        goto fail;
      Py_DECREF (list);
    }

  /* Check if the signal is "Signal 0" or "Trace/breakpoint trap".  */
  if (stop_signal != GDB_SIGNAL_0
      && stop_signal != GDB_SIGNAL_TRAP)
    {
      stop_event_obj =
	  create_signal_event_object (stop_signal);
      if (!stop_event_obj)
	goto fail;
    }

  /* If all fails emit an unknown stop event.  All event types should
     be known and this should eventually be unused.  */
  if (!stop_event_obj)
    {
      stop_event_obj = create_stop_event_object (&stop_event_object_type);
      if (!stop_event_obj)
        goto fail;
    }

  return evpy_emit_event (stop_event_obj, gdb_py_events.stop);

 fail:
  Py_XDECREF (list);
  return -1;
}