From f75be1eba12e32a0ebcecede2fcd697d3b4f672b Mon Sep 17 00:00:00 2001 From: Kevin Pouget Date: Wed, 31 Aug 2011 16:32:45 +0200 Subject: [PATCH] PR/12691 Add the inferior to Python exited event --- gdb/doc/gdb.texinfo | 10 ++++++---- gdb/python/py-exitedevent.c | 6 ++++++ gdb/testsuite/gdb.python/py-events.c | 1 + gdb/testsuite/gdb.python/py-events.exp | 11 ++++++++++- gdb/testsuite/gdb.python/py-events.py | 1 + 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 23b2a98..51aaad4 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -22285,12 +22285,14 @@ inherited attribute refer to @code{gdb.ThreadEvent} above. @item events.exited Emits @code{events.ExitedEvent} which indicates that the inferior has exited. -@code{events.ExitedEvent} has one optional attribute. This attribute -will exist only in the case that the inferior exited with some -status. +@code{events.ExitedEvent} has two attributes: @table @code @defivar ExitedEvent exit_code -An integer representing the exit code which the inferior has returned. +An integer representing the exit code which the inferior has returned. (Optional, +will exist only in the case that the inferior exited with some status.) +@end defivar +@defivar ExitedEvent inferior +A reference to the inferior which triggered the @{exited} event. @end defivar @end table diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c index 08150e5..5ee6eb8 100644 --- a/gdb/python/py-exitedevent.c +++ b/gdb/python/py-exitedevent.c @@ -37,6 +37,12 @@ create_exited_event_object (const LONGEST *exit_code) PyLong_FromLongLong (*exit_code)) < 0) 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; fail: diff --git a/gdb/testsuite/gdb.python/py-events.c b/gdb/testsuite/gdb.python/py-events.c index ceb697e..665ca51 100644 --- a/gdb/testsuite/gdb.python/py-events.c +++ b/gdb/testsuite/gdb.python/py-events.c @@ -17,6 +17,7 @@ */ int second(){ + fork() ; return 12; } diff --git a/gdb/testsuite/gdb.python/py-events.exp b/gdb/testsuite/gdb.python/py-events.exp index e5d6daf..cdf4ae6 100644 --- a/gdb/testsuite/gdb.python/py-events.exp +++ b/gdb/testsuite/gdb.python/py-events.exp @@ -42,6 +42,8 @@ if ![runto_main ] then { return -1 } +gdb_test_no_output "set detach-on-fork off" "Don't detach on fork" + gdb_test "Test_Events" "Event testers registered." gdb_breakpoint "first" @@ -56,4 +58,11 @@ all threads stopped" #test exited event. gdb_test "continue" ".*event type: continue.* .*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 1 terminated." diff --git a/gdb/testsuite/gdb.python/py-events.py b/gdb/testsuite/gdb.python/py-events.py index 9f05b9f..b40f074 100644 --- a/gdb/testsuite/gdb.python/py-events.py +++ b/gdb/testsuite/gdb.python/py-events.py @@ -41,6 +41,7 @@ def exit_handler (event): if (isinstance (event, gdb.ExitedEvent)): print "event type: exit" print "exit code: %d" % (event.exit_code) + print "exit inf: %d" % (event.inferior.num) def continue_handler (event): if (isinstance (event, gdb.ContinueEvent)): -- 1.7.6