123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
- This file is part of GDB.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
- #include "defs.h"
- #include "tui/tui.h"
- #include "tui/tui-stack.h"
- #include "tui/tui-data.h"
- #include "tui/tui-location.h"
- #include "symtab.h"
- #include "source.h"
- /* See tui/tui-location.h. */
- tui_location_tracker tui_location;
- /* See tui/tui-location.h. */
- bool
- tui_location_tracker::set_location (struct gdbarch *gdbarch,
- const struct symtab_and_line &sal,
- const char *procname)
- {
- gdb_assert (procname != nullptr);
- bool location_changed_p = set_fullname (sal.symtab);
- location_changed_p |= procname != m_proc_name;
- location_changed_p |= sal.line != m_line_no;
- location_changed_p |= sal.pc != m_addr;
- location_changed_p |= gdbarch != m_gdbarch;
- m_proc_name = procname;
- m_line_no = sal.line;
- m_addr = sal.pc;
- m_gdbarch = gdbarch;
- if (location_changed_p)
- tui_show_locator_content ();
- return location_changed_p;
- }
- /* See tui/tui-location.h. */
- bool
- tui_location_tracker::set_location (struct symtab *symtab)
- {
- bool location_changed_p = set_fullname (symtab);
- if (location_changed_p)
- tui_show_locator_content ();
- return location_changed_p;
- }
- /* See tui/tui-location.h. */
- bool
- tui_location_tracker::set_fullname (struct symtab *symtab)
- {
- const char *fullname = (symtab == nullptr
- ? "??"
- : symtab_to_fullname (symtab));
- bool location_changed_p = fullname != m_full_name;
- m_full_name = std::string (fullname);
- return location_changed_p;
- }
|