diff options
author | Hui Zhu <teawater@gmail.com> | 2008-07-27 07:47:56 +0000 |
---|---|---|
committer | Hui Zhu <teawater@gmail.com> | 2008-07-27 07:47:56 +0000 |
commit | 7134d49c36e1bba9030229a4e641654f1d373b43 (patch) | |
tree | d90480c715cc1c0da57fed5694d5025b6727e931 | |
parent | fb79db55db4c5271b76cd7bc6faa25a5ace4659e (diff) | |
download | gdb-7134d49c36e1bba9030229a4e641654f1d373b43.tar.gz |
Add a cleanup in function "record_message".
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/record.c | 26 |
2 files changed, 23 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4825c7e4d99..8f535a3b5dc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2008-07-27 Hui Zhu <teawater@gmail.com> + + Add a cleanup in function "record_message". + + * record.c (record_message_cleanups): New function. Clean for function + "record_message". + (record_message): Add a cleanup to call function + "record_message_cleanups". + 2008-07-24 Hui Zhu <teawater@gmail.com> Add a element "to_support_record_wait" to target_ops. diff --git a/gdb/record.c b/gdb/record.c index 67658e0f2e0..059b35ee90c 100644 --- a/gdb/record.c +++ b/gdb/record.c @@ -213,14 +213,24 @@ record_arch_list_add_end (int need_dasm) return (0); } +static void +record_message_cleanups (void *ignore) +{ + record_list_release (record_arch_list_tail); + set_executing (inferior_ptid, 0); + normal_stop (); +} + /* Before inferior step (When GDB record the running message, inferior only can step.), GDB will call this function to record the values to "record_list". This function will call "gdbarch_record" to record the running message of inferior and set them to "record_arch_list". And add it to "record_list". */ + void record_message (struct gdbarch *gdbarch) { int ret; + struct cleanup *old_cleanups = make_cleanup (record_message_cleanups, 0); record_arch_list_head = NULL; record_arch_list_tail = NULL; @@ -246,19 +256,11 @@ record_message (struct gdbarch *gdbarch) } if (ret > 0) - { - record_list_release (record_arch_list_tail); - set_executing (inferior_ptid, 0); - normal_stop (); - error (_("Record: record pause the program.")); - } + error (_("Record: record pause the program.")); if (ret < 0) - { - record_list_release (record_arch_list_tail); - set_executing (inferior_ptid, 0); - normal_stop (); - error (_("Record: record message error.")); - } + error (_("Record: record message error.")); + + discard_cleanups (old_cleanups); record_list->next = record_arch_list_head; record_arch_list_head->prev = record_list; |