From 0ab92974ab9041d80dbd12303d5e8115436fd61e Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 13 Nov 2019 15:41:08 -0700 Subject: [PATCH] Change set_locator_info to take a symtab_and_line This changes set_locator_info to take a symtab_and_line, rather than the individual components. gdb/ChangeLog 2019-12-20 Tom Tromey * tui/tui-stack.h (struct tui_locator_window) : Take a symtab_and_line. * tui/tui-stack.c (tui_locator_window::set_locator_info): Take a symtab_and_line. (tui_show_frame_info): Update. Change-Id: Icb58d67e6c5bdc034eede9e5bbe8c1d1e633fbb5 --- gdb/ChangeLog | 8 +++++++ gdb/tui/tui-stack.c | 57 +++++++++++++++++---------------------------- gdb/tui/tui-stack.h | 5 ++-- 3 files changed, 32 insertions(+), 38 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 85212286df3..887e04e57dd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2019-12-20 Tom Tromey + + * tui/tui-stack.h (struct tui_locator_window) : + Take a symtab_and_line. + * tui/tui-stack.c (tui_locator_window::set_locator_info): Take a + symtab_and_line. + (tui_show_frame_info): Update. + 2019-12-20 Tom Tromey * tui/tui-stack.c (tui_show_frame_info): Don't call diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index f42bd836d20..d2443438596 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -258,28 +258,26 @@ tui_locator_window::set_locator_fullname (const char *fullname) bool tui_locator_window::set_locator_info (struct gdbarch *gdbarch_in, - const char *fullname, - const char *procname, - int lineno, - CORE_ADDR addr_in) + const struct symtab_and_line &sal, + const char *procname) { bool locator_changed_p = false; - if (procname == NULL) - procname = ""; + gdb_assert (procname != NULL); - if (fullname == NULL) - fullname = ""; + const char *fullname = (sal.symtab == nullptr + ? "??" + : symtab_to_fullname (sal.symtab)); locator_changed_p |= proc_name != procname; - locator_changed_p |= lineno != line_no; - locator_changed_p |= addr_in != addr; + locator_changed_p |= sal.line != line_no; + locator_changed_p |= sal.pc != addr; locator_changed_p |= gdbarch_in != gdbarch; locator_changed_p |= full_name != fullname; proc_name = procname; - line_no = lineno; - addr = addr_in; + line_no = sal.line; + addr = sal.pc; gdbarch = gdbarch_in; set_locator_fullname (fullname); @@ -314,26 +312,18 @@ tui_show_frame_info (struct frame_info *fi) if (fi) { - CORE_ADDR pc; - symtab_and_line sal = find_frame_sal (fi); - const char *fullname = nullptr; - if (sal.symtab != nullptr) - fullname = symtab_to_fullname (sal.symtab); - - if (get_frame_pc_if_available (fi, &pc)) - locator_changed_p - = locator->set_locator_info (get_frame_arch (fi), - (sal.symtab == 0 - ? "??" : fullname), - tui_get_function_from_frame (fi), - sal.line, - pc); + const char *func_name; + /* find_frame_sal does not always set PC, but we want to ensure + that it is available in the SAL. */ + if (get_frame_pc_if_available (fi, &sal.pc)) + func_name = tui_get_function_from_frame (fi); else - locator_changed_p - = locator->set_locator_info (get_frame_arch (fi), - "??", _(""), sal.line, 0); + func_name = _(""); + + locator_changed_p = locator->set_locator_info (get_frame_arch (fi), + sal, func_name); /* If the locator information has not changed, then frame information has not changed. If frame information has not changed, then the windows' @@ -341,10 +331,6 @@ tui_show_frame_info (struct frame_info *fi) if (!locator_changed_p) return 0; - /* find_frame_sal does not always set PC, but we want to ensure - that it is available in the SAL. */ - sal.pc = pc; - for (struct tui_source_window_base *win_info : tui_source_windows ()) { win_info->maybe_update (fi, sal); @@ -355,8 +341,9 @@ tui_show_frame_info (struct frame_info *fi) } else { - locator_changed_p - = locator->set_locator_info (NULL, NULL, NULL, 0, (CORE_ADDR) 0); + symtab_and_line sal {}; + + locator_changed_p = locator->set_locator_info (NULL, sal, ""); if (!locator_changed_p) return 0; diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h index 97e6956029e..3bfe529244c 100644 --- a/gdb/tui/tui-stack.h +++ b/gdb/tui/tui-stack.h @@ -54,9 +54,8 @@ struct tui_locator_window : public tui_gen_win_info Returns true if any of the locator's fields were actually changed, and false otherwise. */ bool set_locator_info (struct gdbarch *gdbarch, - const char *fullname, - const char *procname, - int lineno, CORE_ADDR addr); + const struct symtab_and_line &sal, + const char *procname); /* Set the full_name portion of the locator. */ void set_locator_fullname (const char *fullname); -- 2.30.2