2011-10-04 Kevin Pouget <kevin.pouget@st.com>
PR python/12691: Add the inferior to Python exited event * python/py-exitedevent.c (create_exited_event_object): Add inferior to exited_event. * python/py-event.h (emit_exited_event): Likewise * python/-inferior.c (python_inferior_exit): Likewise 2011-10-04 Kevin Pouget <kevin.pouget@st.com> PR python/12691: Add the inferior to Python exited event * gdb.python/py-events.exp: Test the inferior attribute of exited event with a fork. * gdb.python/py-events.py: Print inferior number on exit. * gdb.python/py-events.c: Fork the inferior. 2011-10-04 Kevin Pouget <kevin.pouget@st.com> PR python/12691: Add the inferior to Python exited event * gdb.texinfo (Events In Python): Describe exited inferior attribute.
This commit is contained in:
parent
54d2bafcf2
commit
cb6be26b8b
10 changed files with 53 additions and 10 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2011-10-04 Kevin Pouget <kevin.pouget@st.com>
|
||||||
|
|
||||||
|
PR python/12691: Add the inferior to Python exited event
|
||||||
|
* python/py-exitedevent.c (create_exited_event_object): Add inferior
|
||||||
|
to exited_event.
|
||||||
|
* python/py-event.h (emit_exited_event): Likewise
|
||||||
|
* python/-inferior.c (python_inferior_exit): Likewise
|
||||||
|
|
||||||
2011-10-03 Joel Brobecker <brobecker@adacore.com>
|
2011-10-03 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* ada-tasks.c (print_ada_task_info): Add "thread-id" field
|
* ada-tasks.c (print_ada_task_info): Add "thread-id" field
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-10-04 Kevin Pouget <kevin.pouget@st.com>
|
||||||
|
|
||||||
|
PR python/12691: Add the inferior to Python exited event
|
||||||
|
* gdb.texinfo (Events In Python): Describe exited inferior attribute.
|
||||||
|
|
||||||
2011-10-03 Joel Brobecker <brobecker@adacore.com>
|
2011-10-03 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* gdb.texinfo (GDB/MI Miscellaneous Commands): Minor
|
* gdb.texinfo (GDB/MI Miscellaneous Commands): Minor
|
||||||
|
|
|
@ -22306,12 +22306,16 @@ inherited attribute refer to @code{gdb.ThreadEvent} above.
|
||||||
|
|
||||||
@item events.exited
|
@item events.exited
|
||||||
Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
|
Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
|
||||||
@code{events.ExitedEvent} has one optional attribute. This attribute
|
@code{events.ExitedEvent} has two attributes:
|
||||||
will exist only in the case that the inferior exited with some
|
|
||||||
status.
|
|
||||||
@table @code
|
@table @code
|
||||||
@defvar ExitedEvent.exit_code
|
@defvar ExitedEvent.exit_code
|
||||||
An integer representing the exit code which the inferior has returned.
|
An integer representing the exit code, if available, which the inferior
|
||||||
|
has returned. (The exit code could be unavailable if, for example,
|
||||||
|
@value{GDBN} detaches from the inferior.) If the exit code is unavailable,
|
||||||
|
the attribute does not exist.
|
||||||
|
@end defvar
|
||||||
|
@defvar ExitedEvent inferior
|
||||||
|
A reference to the inferior which triggered the @code{exited} event.
|
||||||
@end defvar
|
@end defvar
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ typedef struct
|
||||||
} event_object;
|
} event_object;
|
||||||
|
|
||||||
extern int emit_continue_event (ptid_t ptid);
|
extern int emit_continue_event (ptid_t ptid);
|
||||||
extern int emit_exited_event (const LONGEST *exit_code);
|
extern int emit_exited_event (const LONGEST *exit_code, struct inferior *inf);
|
||||||
|
|
||||||
extern int evpy_emit_event (PyObject *event,
|
extern int evpy_emit_event (PyObject *event,
|
||||||
eventregistry_object *registry);
|
eventregistry_object *registry);
|
||||||
|
|
|
@ -22,9 +22,10 @@
|
||||||
static PyTypeObject exited_event_object_type;
|
static PyTypeObject exited_event_object_type;
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
create_exited_event_object (const LONGEST *exit_code)
|
create_exited_event_object (const LONGEST *exit_code, struct inferior *inf)
|
||||||
{
|
{
|
||||||
PyObject *exited_event;
|
PyObject *exited_event;
|
||||||
|
PyObject *inf_obj;
|
||||||
|
|
||||||
exited_event = create_event_object (&exited_event_object_type);
|
exited_event = create_event_object (&exited_event_object_type);
|
||||||
|
|
||||||
|
@ -37,6 +38,12 @@ create_exited_event_object (const LONGEST *exit_code)
|
||||||
PyLong_FromLongLong (*exit_code)) < 0)
|
PyLong_FromLongLong (*exit_code)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
inf_obj = inferior_to_inferior_object (inf);
|
||||||
|
if (!inf_obj || evpy_add_attribute (exited_event,
|
||||||
|
"inferior",
|
||||||
|
inf_obj) < 0)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
return exited_event;
|
return exited_event;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
@ -48,14 +55,14 @@ create_exited_event_object (const LONGEST *exit_code)
|
||||||
will create a new Python exited event object. */
|
will create a new Python exited event object. */
|
||||||
|
|
||||||
int
|
int
|
||||||
emit_exited_event (const LONGEST *exit_code)
|
emit_exited_event (const LONGEST *exit_code, struct inferior *inf)
|
||||||
{
|
{
|
||||||
PyObject *event;
|
PyObject *event;
|
||||||
|
|
||||||
if (evregpy_no_listeners_p (gdb_py_events.exited))
|
if (evregpy_no_listeners_p (gdb_py_events.exited))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
event = create_exited_event_object (exit_code);
|
event = create_exited_event_object (exit_code, inf);
|
||||||
|
|
||||||
if (event)
|
if (event)
|
||||||
return evpy_emit_event (event, gdb_py_events.exited);
|
return evpy_emit_event (event, gdb_py_events.exited);
|
||||||
|
|
|
@ -119,7 +119,7 @@ python_inferior_exit (struct inferior *inf)
|
||||||
if (inf->has_exit_code)
|
if (inf->has_exit_code)
|
||||||
exit_code = &inf->exit_code;
|
exit_code = &inf->exit_code;
|
||||||
|
|
||||||
if (emit_exited_event (exit_code) < 0)
|
if (emit_exited_event (exit_code, inf) < 0)
|
||||||
gdbpy_print_stack ();
|
gdbpy_print_stack ();
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
do_cleanups (cleanup);
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2011-10-04 Kevin Pouget <kevin.pouget@st.com>
|
||||||
|
|
||||||
|
PR python/12691: Add the inferior to Python exited event
|
||||||
|
* gdb.python/py-events.exp: Test the inferior attribute of exited
|
||||||
|
event with a fork.
|
||||||
|
* gdb.python/py-events.py: Print inferior number on exit.
|
||||||
|
* gdb.python/py-events.c: Fork the inferior.
|
||||||
|
|
||||||
2011-10-03 Edjunior Machado <emachado@linux.vnet.ibm.com>
|
2011-10-03 Edjunior Machado <emachado@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* gdb.base/jit.exp: Add testcase name to log message
|
* gdb.base/jit.exp: Add testcase name to log message
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int second(){
|
int second(){
|
||||||
|
fork() ;
|
||||||
return 12;
|
return 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ if ![runto_main ] then {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gdb_test_no_output "set detach-on-fork off" ""
|
||||||
|
|
||||||
gdb_test "Test_Events" "Event testers registered."
|
gdb_test "Test_Events" "Event testers registered."
|
||||||
|
|
||||||
gdb_breakpoint "first"
|
gdb_breakpoint "first"
|
||||||
|
@ -54,4 +56,11 @@ all threads stopped"
|
||||||
#test exited event.
|
#test exited event.
|
||||||
gdb_test "continue" ".*event type: continue.*
|
gdb_test "continue" ".*event type: continue.*
|
||||||
.*event type: exit.*
|
.*event type: exit.*
|
||||||
.*exit code: 12.*"
|
.*exit code: 12.*
|
||||||
|
.*exit inf: 1.*" "Inferior 1 terminated."
|
||||||
|
|
||||||
|
gdb_test "inferior 2" ".*Switching to inferior 2.*"
|
||||||
|
gdb_test "continue" ".*event type: continue.*
|
||||||
|
.*event type: exit.*
|
||||||
|
.*exit code: 12.*
|
||||||
|
.*exit inf: 2.*" "Inferior 2 terminated."
|
||||||
|
|
|
@ -43,6 +43,7 @@ def exit_handler (event):
|
||||||
if (isinstance (event, gdb.ExitedEvent)):
|
if (isinstance (event, gdb.ExitedEvent)):
|
||||||
print "event type: exit"
|
print "event type: exit"
|
||||||
print "exit code: %d" % (event.exit_code)
|
print "exit code: %d" % (event.exit_code)
|
||||||
|
print "exit inf: %d" % (event.inferior.num)
|
||||||
|
|
||||||
def continue_handler (event):
|
def continue_handler (event):
|
||||||
if (isinstance (event, gdb.ContinueEvent)):
|
if (isinstance (event, gdb.ContinueEvent)):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue