61 const char *ptr = str.c_str ();
64 while ((c = *ptr) !=
'\0')
70 if (style.parse (ptr, &n_read))
102 std::vector<tui_asm_line> &asm_lines,
103 CORE_ADDR pc,
int count,
104 size_t *addr_size =
nullptr)
113 for (
int i = 0; i < count; ++i)
116 CORE_ADDR orig_pc = pc;
122 catch (
const gdb_exception_error &except)
127 if (except.error != MEMORY_ERROR)
140 if (addr_size !=
nullptr)
148 *addr_size = std::max (*addr_size, new_size);
152 asm_lines.push_back (std::move (tal));
170 if (msym.
minsym !=
nullptr)
172 else if (msym_prev.
minsym !=
nullptr)
179 return section->
addr ();
193 max_lines = (from > 0) ? from : - from;
197 std::vector<tui_asm_line> asm_lines;
206 new_low = asm_lines.back ().addr;
233 gdb::optional<CORE_ADDR> possible_new_low;
247 last_addr = asm_lines.back ().addr;
252 if (last_addr >= pc && new_low != prev_low
253 && asm_lines.size () >= max_lines)
254 possible_new_low.emplace (new_low);
261 while ((last_addr > pc
262 || (last_addr == pc && asm_lines.size () < max_lines))
263 && new_low != prev_low);
270 if (asm_lines.size () < max_lines)
272 if (!possible_new_low.has_value ())
276 new_low = *possible_new_low;
278 last_addr = asm_lines.back ().addr;
279 gdb_assert (asm_lines.size () >= max_lines);
286 int pos = max_lines - 1;
291 if (pos >= max_lines)
294 CORE_ADDR old_next_addr = next_addr;
295 std::vector<tui_asm_line> single_asm_line;
299 if (next_addr <= old_next_addr)
301 gdb_assert (single_asm_line.size () == 1);
302 asm_lines[pos] = single_asm_line[0];
303 }
while (next_addr <= pc);
305 if (pos >= max_lines)
307 new_low = asm_lines[pos].addr;
312 gdb_assert (new_low <= pc);
328 CORE_ADDR pc = sal.
pc;
341 std::vector<tui_asm_line> asm_lines;
342 size_t addr_size = 0;
346 insn_pos = (1 + (addr_size / tab_len)) * tab_len;
351 for (i = 0; i < max_lines; i++)
358 if (i < asm_lines.size ())
361 = (asm_lines[i].addr_string
362 +
n_spaces (insn_pos - asm_lines[i].addr_size)
363 + asm_lines[i].insn);
364 addr = asm_lines[i].addr;
372 const char *ptr = line.c_str ();
398 if (sal.
symtab !=
nullptr)
406 if (main_symbol.
minsym !=
nullptr)
425 CORE_ADDR low, CORE_ADDR pc)
467 &&
m_content[line_no].line_or_addr.u.addr ==
loc->address);
479 &&
m_content[i].line_or_addr.u.addr == addr)
struct gdbarch * get_current_arch(void)
bool find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, const struct block **block)
void print_address(struct gdbarch *, CORE_ADDR, struct ui_file *)
int gdb_print_insn(struct gdbarch *gdbarch, CORE_ADDR memaddr, struct ui_file *stream, int *branch_delay_insns)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
bound_minimal_symbol lookup_minimal_symbol_by_pc_section(CORE_ADDR pc_in, struct obj_section *section, lookup_msym_prefer prefer, bound_minimal_symbol *previous)
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
struct obj_section * find_pc_section(CORE_ADDR pc)
int have_partial_symbols(void)
int have_full_symbols(void)
struct program_space * current_program_space
struct symtab_and_line get_current_source_symtab_and_line(void)
void set_default_source_symtab_and_line(void)
CORE_ADDR value_address() const
struct minimal_symbol * minsym
struct program_space * pspace
bool set_contents(struct gdbarch *gdbarch, const struct symtab_and_line &sal) override
bool location_matches_p(struct bp_location *loc, int line_no) override
void maybe_update(frame_info_ptr fi, symtab_and_line sal) override
void do_scroll_vertical(int num_to_scroll) override
void display_start_addr(struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) override
bool addr_is_displayed(CORE_ADDR addr) const
enum tui_line_or_address_kind loa
union tui_line_or_address::@187 u
struct gdbarch * gdbarch() const
struct tui_line_or_address line_or_addr
struct tui_line_or_address m_start_line_or_addr
void update_source_window(struct gdbarch *gdbarch, const struct symtab_and_line &sal)
struct gdbarch * m_gdbarch
std::vector< tui_source_element > m_content
void set_is_exec_point_at(struct tui_line_or_address l)
void update_source_window_as_is(struct gdbarch *gdbarch, const struct symtab_and_line &sal)
bool find_line_pc(struct symtab *symtab, int line, CORE_ADDR *pc)
int tui_term_height(void)
unsigned int tui_tab_width
static CORE_ADDR tui_disassemble(struct gdbarch *gdbarch, std::vector< tui_asm_line > &asm_lines, CORE_ADDR pc, int count, size_t *addr_size=nullptr)
static CORE_ADDR tui_find_disassembly_address(struct gdbarch *gdbarch, CORE_ADDR pc, int from)
static CORE_ADDR tui_find_backward_disassembly_start_address(CORE_ADDR addr)
static size_t len_without_escapes(const std::string &str)
CORE_ADDR tui_get_low_disassembly_address(struct gdbarch *gdbarch, CORE_ADDR low, CORE_ADDR pc)
void tui_get_begin_asm_address(struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
tui_location_tracker tui_location
std::string tui_copy_source_line(const char **ptr, int *length)
const char * n_spaces(int n)