From: Patrick Palka <patrick@parcs.ath.cx>
To: gdb-patches@sourceware.org
Cc: Patrick Palka <patrick@parcs.ath.cx>
Subject: [PATCH] tui: replace deprecated_register_changed_hook with observer
Date: Mon, 06 Jul 2015 01:17:00 -0000 [thread overview]
Message-ID: <1436145432-6502-1-git-send-email-patrick@parcs.ath.cx> (raw)
This is a straightforward replacement of the TUI's use of the
aforementioned hook with the register_changed observer. Since this was
the only user of the hook, this patch also removes the hook.
[ I am not sure if the changes to the function tui_register_changed are
correct. In particular, the inputted frame argument is now passed down
to tui_check_data_values instead of the frame returned by
get_selected_frame. The frame argument passed to each register_changed
observer corresponds to the VALUE_FRAME_ID of the register being
modified within a register assignment, e.g. the $rax in "print $rax =
FOO". When would the frame corresponding to the VALUE_FRAME_ID of a
register not be the currently selected frame? ]
gdb/ChangeLog:
* defs.h (deprecated_register_changed_hook): Remove prototype.
* interps.c (clear_iterpreter_hooks): Remove reference to
deprecated_register_changed_hook.
* top.c (deprecated_register_changed_hook): Remove prototype.
* valops.c (value_assign): Remove reference to
deprecated_register_changed_hook.
* tui/tui-hooks.c (tui_register_changed): Add parameter "frame".
Use it instead of calling get_selected_frame.
(tui_register_changed_observer): Define.
(tui_install_hooks): Remove reference to
deprecated_register_changed_hook. Set
tui_register_changed_observer.
(tui_remove_hooks): Remove reference to
deprecated_register_changed_hook. Unset
tui_register_changed_observer.
---
gdb/defs.h | 1 -
gdb/interps.c | 1 -
gdb/top.c | 5 -----
gdb/tui/tui-hooks.c | 16 +++++++---------
gdb/valops.c | 2 --
5 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/gdb/defs.h b/gdb/defs.h
index 32b08bb..a555da1 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -649,7 +649,6 @@ extern void (*deprecated_readline_begin_hook) (char *, ...)
ATTRIBUTE_FPTR_PRINTF_1;
extern char *(*deprecated_readline_hook) (const char *);
extern void (*deprecated_readline_end_hook) (void);
-extern void (*deprecated_register_changed_hook) (int regno);
extern void (*deprecated_context_hook) (int);
extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
struct target_waitstatus *status,
diff --git a/gdb/interps.c b/gdb/interps.c
index 4c1e6cc..d825e14 100644
--- a/gdb/interps.c
+++ b/gdb/interps.c
@@ -370,7 +370,6 @@ clear_interpreter_hooks (void)
deprecated_readline_begin_hook = 0;
deprecated_readline_hook = 0;
deprecated_readline_end_hook = 0;
- deprecated_register_changed_hook = 0;
deprecated_context_hook = 0;
deprecated_target_wait_hook = 0;
deprecated_call_command_hook = 0;
diff --git a/gdb/top.c b/gdb/top.c
index 01fddd2..1e30b1c 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -221,11 +221,6 @@ void (*deprecated_detach_hook) (void);
void (*deprecated_interactive_hook) (void);
-/* Tell the GUI someone changed the register REGNO. -1 means
- that the caller does not know which register changed or
- that several registers have changed (see value_assign). */
-void (*deprecated_register_changed_hook) (int regno);
-
/* Called when going to wait for the target. Usually allows the GUI
to run while waiting for target events. */
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
index 0eb2f07..ccf0989 100644
--- a/gdb/tui/tui-hooks.c
+++ b/gdb/tui/tui-hooks.c
@@ -67,15 +67,12 @@ tui_new_objfile_hook (struct objfile* objfile)
static int tui_refreshing_registers = 0;
static void
-tui_register_changed_hook (int regno)
+tui_register_changed (struct frame_info *frame, int regno)
{
- struct frame_info *fi;
-
- fi = get_selected_frame (NULL);
if (tui_refreshing_registers == 0)
{
tui_refreshing_registers = 1;
- tui_check_data_values (fi);
+ tui_check_data_values (frame);
tui_refreshing_registers = 0;
}
}
@@ -226,6 +223,7 @@ static struct observer *tui_inferior_exit_observer;
static struct observer *tui_about_to_proceed_observer;
static struct observer *tui_before_prompt_observer;
static struct observer *tui_normal_stop_observer;
+static struct observer *tui_register_changed_observer;
/* Install the TUI specific hooks. */
void
@@ -253,8 +251,8 @@ tui_install_hooks (void)
= observer_attach_before_prompt (tui_before_prompt);
tui_normal_stop_observer
= observer_attach_normal_stop (tui_normal_stop);
-
- deprecated_register_changed_hook = tui_register_changed_hook;
+ tui_register_changed_observer
+ = observer_attach_register_changed (tui_register_changed);
}
/* Remove the TUI specific hooks. */
@@ -263,8 +261,6 @@ tui_remove_hooks (void)
{
deprecated_print_frame_info_listing_hook = 0;
deprecated_query_hook = 0;
- deprecated_register_changed_hook = 0;
-
/* Remove our observers. */
observer_detach_breakpoint_created (tui_bp_created_observer);
tui_bp_created_observer = NULL;
@@ -280,6 +276,8 @@ tui_remove_hooks (void)
tui_before_prompt_observer = NULL;
observer_detach_normal_stop (tui_normal_stop_observer);
tui_normal_stop_observer = NULL;
+ observer_detach_register_changed (tui_register_changed_observer);
+ tui_register_changed_observer = NULL;
}
void _initialize_tui_hooks (void);
diff --git a/gdb/valops.c b/gdb/valops.c
index 66c63c1..c4ff032 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -1170,8 +1170,6 @@ value_assign (struct value *toval, struct value *fromval)
}
observer_notify_register_changed (frame, value_reg);
- if (deprecated_register_changed_hook)
- deprecated_register_changed_hook (-1);
break;
}
--
2.5.0.rc0.5.g91e10c5.dirty
next reply other threads:[~2015-07-06 1:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-06 1:17 Patrick Palka [this message]
2015-07-08 11:41 ` Pedro Alves
2015-07-08 12:30 ` Patrick Palka
2015-07-08 12:48 ` Pedro Alves
2015-07-08 13:37 ` Patrick Palka
2015-07-08 13:52 ` Pedro Alves
2015-07-08 14:11 ` Patrick Palka
2015-07-08 15:06 ` Pedro Alves
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1436145432-6502-1-git-send-email-patrick@parcs.ath.cx \
--to=patrick@parcs.ath.cx \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox