* disasm.h (gdb_disassembly): Add GDBARCH parameter.

(gdb_print_insn): Likewise.
	* disasm.c (dump_insns): Add GDBARCH parameter.  Use it instead
	of current_gdbarch.
	(do_mixed_source_and_assembly): Add GDBARCH parameter.  Pass to
	dump_insns.
	(do_assembly_only): Likewise.
	(gdb_disassembly): Add GDBARCH parameter.  Use it instead of
	current_gdbarch.  Pass to subroutines.
	(gdb_print_insn): Add GDBARCH parameter.  Use it instead of
	current_gdbarch.

	* stack.c (struct gdb_disassembly_stub_args): Add GDBARCH member.
	(gdb_disassembly_stub): Pass architecture to gdb_disassembly.
	(do_gdb_disassembly): Add GDBARCH argument.  Store into args.
	(print_frame_info): Pass architecture to do_gdb_disassembly.

	* printcmd.c (print_formatted): Pass architecture to gdb_print_insn.

	* mi/mi-cmd-disas.c: Include "arch-utils.h"
	(mi_cmd_disassemble): Pass architecture to gdb_disassembly.

	* cli/cli-cmds.c: Include "arch-utils.h".
	(print_disassembly): Add GDBARCH parameter.  Pass to gdb_disassembly
	and tui_show_assembly.
	(disassemble_current_function): Pass architecture to
	tui_get_low_disassembly_address and print_disassembly.
	(disassemble_command): Pass architecture to
	tui_get_low_disassembly_address and print_disassembly.

	* tui/tui.c (tui_show_assembly): Add GDBARCH parameter.  Pass to
	tui_update_source_windows_with_addr.

	* tui/tui-data.h (struct tui_locator_element): Add GDBARCH member.
	(struct tui_source_info): Likewise.
	* tui/tui-data.c (tui_clear_win_detail): Clear source_info.gdbarch.

	* tui/tui-disasm.c (tui_disassemble): Add GDBARCH parameter.
	Pass to gdb_print_insn.
	(tui_find_disassembly_address): Add GDBARCH parameter.  Pass to
	tui_disassemble.
	(tui_set_disassem_content): Add GDBARCH parameter.  Install into
	source_info.gdbarch.  Pass to tui_disassemble.
	(tui_show_disassem): Add GDBARCH parameter.  Pass to
	tui_update_source_window.
	(tui_show_disassem_and_update_source): Add GDBARCH parameter.  Pass to
	tui_show_disassem and tui_update_source_window.

	(tui_get_begin_asm_address): Return locator architecture in addition
	to locator PC value.

	(tui_get_low_disassembly_address): Add GDBARCH parameter.   Pass to
	tui_get_low_disassembly_address.

	(tui_vertical_disassem_scroll): Pass architecture to subroutines.

	* tui/tui-disasm.h (tui_set_disassem_content): Add GDBARCH parameter.
	(tui_show_disassem): Likewise.
	(tui_show_disassem_and_update_source): Likewise.
	(tui_get_begin_asm_address): Return architecture and PC value.

	* tui/tui.h (tui_get_low_disassembly_address): Add GDBARCH parameter.
	(tui_show_assembly): Add GDBARCH parameter.

	* tui/tui-layout.c (extract_display_start_addr): Return current window
	architecture in addition to current PC value.

	(tui_set_layout): Update calls to tui_get_low_disassembly_address and
	extract_display_start_addr.  Pass architecture to
	tui_update_source_windows_with_addr.

	* tui/tui-source.c: Include "objfiles.h".
	(tui_set_source_content): Initialize window architecture.
	(tui_show_symtab_source): Add GDBARCH parameter.  Pass to
	tui_update_source_window_as_is

	* tui/tui-source.h (tui_show_symtab_source): Add GDBARCH parameter.

	* tui/tui-stack.c (tui_set_locator_info): Add GDBARCH parameter.
	Install locator architecture.
	(tui_set_locator_filename): Update call.
	(tui_show_frame_info): Pass architecture to tui_set_locator_info
	and subroutines.

	* tui/tui-win.c (make_visible_with_new_height): Pass architecture
	to tui_update_source_window.

	* tui/tui-winsource.c: Include "objfiles.h".
	(tui_display_main): Update call to tui_get_begin_asm_address.
	Pass architecture to tui_update_source_windows_with_addr.
	(tui_update_source_window): Add GDBARCH parameter.  Pass to
	tui_update_source_window_as_is.
	(tui_update_source_window_as_is): Add GDBARCH parameter.
	Pass to tui_set_disassem_content.
	(tui_update_source_windows_with_addr): Add GDBARCH parameter.
	Pass to subroutines.
	(tui_update_source_windows_with_line): Pass objfile architecture
	to subroutines.
	(tui_horizontal_source_scroll): Pass architecture to
	tui_update_source_window_as_is.

	* tui/tui-winsource.h (tui_update_source_window): Add GDBARCH
	parameter.
	(tui_update_source_window_as_is): Likewise.
	(tui_update_source_windows_with_addr): Likewise.
This commit is contained in:
Ulrich Weigand 2009-07-02 17:17:42 +00:00
parent a6d9a66e23
commit 13274fc342
20 changed files with 272 additions and 103 deletions

View file

@ -19,6 +19,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "arch-utils.h"
#include "readline/readline.h"
#include "readline/tilde.h"
#include "completer.h"
@ -892,7 +893,8 @@ list_command (char *arg, int from_tty)
MIXED is non-zero to print source with the assembler. */
static void
print_disassembly (const char *name, CORE_ADDR low, CORE_ADDR high, int mixed)
print_disassembly (struct gdbarch *gdbarch, const char *name,
CORE_ADDR low, CORE_ADDR high, int mixed)
{
#if defined(TUI)
if (!tui_is_window_visible (DISASSEM_WIN))
@ -905,7 +907,7 @@ print_disassembly (const char *name, CORE_ADDR low, CORE_ADDR high, int mixed)
printf_filtered ("from %s to %s:\n", paddress (low), paddress (high));
/* Dump the specified range. */
gdb_disassembly (uiout, 0, mixed, -1, low, high);
gdb_disassembly (gdbarch, uiout, 0, mixed, -1, low, high);
printf_filtered ("End of assembler dump.\n");
gdb_flush (gdb_stdout);
@ -913,7 +915,7 @@ print_disassembly (const char *name, CORE_ADDR low, CORE_ADDR high, int mixed)
#if defined(TUI)
else
{
tui_show_assembly (low);
tui_show_assembly (gdbarch, low);
}
#endif
}
@ -925,10 +927,14 @@ print_disassembly (const char *name, CORE_ADDR low, CORE_ADDR high, int mixed)
static void
disassemble_current_function (int mixed)
{
struct frame_info *frame;
struct gdbarch *gdbarch;
CORE_ADDR low, high, pc;
char *name;
pc = get_frame_pc (get_selected_frame (_("No frame selected.")));
frame = get_selected_frame (_("No frame selected."));
gdbarch = get_frame_arch (frame);
pc = get_frame_pc (frame);
if (find_pc_partial_function (pc, &name, &low, &high) == 0)
error (_("No function contains program counter for selected frame."));
#if defined(TUI)
@ -936,11 +942,11 @@ disassemble_current_function (int mixed)
`tui_version'. */
if (tui_active)
/* FIXME: cagney/2004-02-07: This should be an observer. */
low = tui_get_low_disassembly_address (low, pc);
low = tui_get_low_disassembly_address (gdbarch, low, pc);
#endif
low += gdbarch_deprecated_function_start_offset (current_gdbarch);
low += gdbarch_deprecated_function_start_offset (gdbarch);
print_disassembly (name, low, high, mixed);
print_disassembly (gdbarch, name, low, high, mixed);
}
/* Dump a specified section of assembly code.
@ -958,6 +964,7 @@ disassemble_current_function (int mixed)
static void
disassemble_command (char *arg, int from_tty)
{
struct gdbarch *gdbarch = get_current_arch ();
CORE_ADDR low, high;
char *name;
CORE_ADDR pc, pc_masked;
@ -1010,9 +1017,9 @@ disassemble_command (char *arg, int from_tty)
`tui_version'. */
if (tui_active)
/* FIXME: cagney/2004-02-07: This should be an observer. */
low = tui_get_low_disassembly_address (low, pc);
low = tui_get_low_disassembly_address (gdbarch, low, pc);
#endif
low += gdbarch_deprecated_function_start_offset (current_gdbarch);
low += gdbarch_deprecated_function_start_offset (gdbarch);
}
else
{
@ -1022,7 +1029,7 @@ disassemble_command (char *arg, int from_tty)
high = parse_and_eval_address (space_index + 1);
}
print_disassembly (name, low, high, mixed_source_and_assembly);
print_disassembly (gdbarch, name, low, high, mixed_source_and_assembly);
}
static void