/* Function to display the disassembly window. */ void tui_show_disassem_and_update_source (CORE_ADDR start_addr) { struct symtab_and_line sal; tui_show_disassem (start_addr); if (tui_current_layout () == SRC_DISASSEM_COMMAND) { struct tui_line_or_address val; /* ** Update what is in the source window if it is displayed too, ** note that it follows what is in the disassembly window and visa-versa */ sal = find_pc_line (start_addr, 0); val.loa = LOA_LINE; val.u.line_no = sal.line; tui_update_source_window (TUI_SRC_WIN, sal.symtab, val, TRUE); if (sal.symtab) { set_current_source_symtab_and_line (&sal); tui_update_locator_filename (sal.symtab->filename); } else tui_update_locator_filename ("?"); } return; }
/* Function to display source in the source/asm window. This function shows the source as specified by the horizontal offset. */ void tui_update_source_window_as_is (struct tui_win_info *win_info, struct gdbarch *gdbarch, struct symtab *s, struct tui_line_or_address line_or_addr, int noerror) { enum tui_status ret; if (win_info->generic.type == SRC_WIN) ret = tui_set_source_content (s, line_or_addr.u.line_no, noerror); else ret = tui_set_disassem_content (gdbarch, line_or_addr.u.addr); if (ret == TUI_FAILURE) { tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT); tui_clear_exec_info_content (win_info); } else { tui_update_breakpoint_info (win_info, 0); tui_show_source_content (win_info); tui_update_exec_info (win_info); if (win_info->generic.type == SRC_WIN) { struct symtab_and_line sal; init_sal (&sal); sal.line = line_or_addr.u.line_no + (win_info->generic.content_size - 2); sal.symtab = s; sal.pspace = SYMTAB_PSPACE (s); set_current_source_symtab_and_line (&sal); /* If the focus was in the asm win, put it in the src win if we don't have a split layout. */ if (tui_win_with_focus () == TUI_DISASM_WIN && tui_current_layout () != SRC_DISASSEM_COMMAND) tui_set_win_focus_to (TUI_SRC_WIN); } } return; }