diff options
author | Tom Tromey <tom@tromey.com> | 2019-11-12 17:56:42 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-12-20 09:15:53 -0700 |
commit | 9f7540a5deb07875fb8e75de86857a9cae8bd30a (patch) | |
tree | 0e096b931c7d2ee08da1ac95d2cf24245320aa8a /gdb/tui/tui-disasm.c | |
parent | 57e4b379e96383c4c7ee0aa0bb9b81018688f47d (diff) | |
download | gdb-9f7540a5deb07875fb8e75de86857a9cae8bd30a.zip gdb-9f7540a5deb07875fb8e75de86857a9cae8bd30a.tar.gz gdb-9f7540a5deb07875fb8e75de86857a9cae8bd30a.tar.bz2 |
Use symtab_and_line when updating TUI windows
This changes a few TUI source window methods to take a symtab_and_line
rather than separate symtab and tui_line_or_address parameters. A
symtab_and_line already incorporates the same information, so this
seemed simpler. Also, it helps avoid the problem that the source and
disassembly windows need different information -- both forms are
present in the SAL.
gdb/ChangeLog
2019-12-20 Tom Tromey <tom@tromey.com>
* tui/tui-winsource.h (struct tui_source_window_base)
<set_contents, update_source_window_as_is, update_source_window>:
Take a sal, not a separate symtab and tui_line_or_address.
* tui/tui-winsource.c (tui_source_window_base::update_source_window)
(tui_source_window_base::update_source_window_as_is): Take a sal,
not a separate symtab and tui_line_or_address.
(tui_update_source_windows_with_addr)
(tui_update_source_windows_with_line)
(tui_source_window_base::rerender)
(tui_source_window_base::refill): Update.
* tui/tui-source.h (struct tui_source_window) <set_contents>: Take
a sal, not a separate symtab and tui_line_or_address.
* tui/tui-source.c (tui_source_window::set_contents): Take a sal,
not a separate symtab and tui_line_or_address.
(tui_source_window::maybe_update): Update.
* tui/tui-disasm.h (struct tui_disasm_window) <set_contents>: Take
a sal, not a separate symtab and tui_line_or_address.
* tui/tui-disasm.c (tui_disasm_window::set_contents): Take a sal,
not a separate symtab and tui_line_or_address.
(tui_disasm_window::do_scroll_vertical)
(tui_disasm_window::maybe_update): Update.
Change-Id: I6974a03589930a0f910c657ef50b7f6f7397c87d
Diffstat (limited to 'gdb/tui/tui-disasm.c')
-rw-r--r-- | gdb/tui/tui-disasm.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c index 8a46bba..376343b 100644 --- a/gdb/tui/tui-disasm.c +++ b/gdb/tui/tui-disasm.c @@ -200,8 +200,7 @@ tui_find_disassembly_address (struct gdbarch *gdbarch, CORE_ADDR pc, int from) /* Function to set the disassembly window's content. */ bool tui_disasm_window::set_contents (struct gdbarch *arch, - struct symtab *s, - struct tui_line_or_address line_or_addr) + const struct symtab_and_line &sal) { int i; int offset = horizontal_offset; @@ -211,8 +210,7 @@ tui_disasm_window::set_contents (struct gdbarch *arch, int tab_len = tui_tab_width; int insn_pos; - gdb_assert (line_or_addr.loa == LOA_ADDRESS); - CORE_ADDR pc = line_or_addr.u.addr; + CORE_ADDR pc = sal.pc; if (pc == 0) return false; @@ -323,7 +321,6 @@ tui_disasm_window::do_scroll_vertical (int num_to_scroll) if (!content.empty ()) { CORE_ADDR pc; - struct tui_line_or_address val; pc = start_line_or_addr.u.addr; if (num_to_scroll >= 0) @@ -331,9 +328,10 @@ tui_disasm_window::do_scroll_vertical (int num_to_scroll) else --num_to_scroll; - val.loa = LOA_ADDRESS; - val.u.addr = tui_find_disassembly_address (gdbarch, pc, num_to_scroll); - update_source_window_as_is (gdbarch, NULL, val); + symtab_and_line sal {}; + sal.pspace = current_program_space; + sal.pc = tui_find_disassembly_address (gdbarch, pc, num_to_scroll); + update_source_window_as_is (gdbarch, sal); } } @@ -383,7 +381,10 @@ tui_disasm_window::maybe_update (struct frame_info *fi, symtab_and_line sal) a.loa = LOA_ADDRESS; a.u.addr = low; if (!addr_is_displayed (sal.pc)) - update_source_window (frame_arch, sal.symtab, a); + { + sal.pc = low; + update_source_window (frame_arch, sal); + } else { a.u.addr = sal.pc; |