Re: debugging sh4 in mi mode

Elena Zannoni
2002-11-08T17:20:18Z

Kris Warkentin writes:
> We were having a problem when debugging sh4 in mi mode with the
> "-data-disassemble" command. It seems that mi_cmd_disassemble() uses the
> function pointer tm_print_insn which, for sh, was NULL. I looked at some
> other arches and they seem to set tm_print_insn in their
> _initialize_<arch>_tdep() in <arch>-tdep.c so that is what I did to solve
> our problem. Is this the proper way to do it?
>

Are you working with an older version of gdb? This should be fixed in
current CVS. Right now the disassembler functions use
ui_file_rewind (stb->stream);
pc += TARGET_PRINT_INSN (pc, di);
ui_out_field_stream (uiout, "inst", stb);

TARGET_PRINT_INSN is wired into the multiarch machinery, and it will call
gdb_print_insns_sh:

set_gdbarch_print_insn (gdbarch, gdb_print_insn_sh);

Do you have the above lines in your version of gdb?

Elena

> cheers,
>
> Kris
>
> Index: sh-tdep.c
> ===================================================================
> RCS file: /product/tools/gdb/gdb/sh-tdep.c,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -c -r1.8 -r1.9
> *** sh-tdep.c 17 Sep 2002 18:31:22 -0000 1.8
> --- sh-tdep.c 8 Nov 2002 16:33:39 -0000 1.9
> ***************
> *** 2207,2211 ****
> --- 2207,2214 ----
>
> register_gdbarch_init (bfd_arch_sh, sh_gdbarch_init);
>
> + if(!tm_print_insn)
> + tm_print_insn = gdb_print_insn_sh;
> +
> add_com ("regs", class_vars, sh_show_regs_command, "Print all
> registers");
> }