mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-24 14:53:34 +08:00
2001-09-05 Elena Zannoni <ezannoni@redhat.com>
* gdbarch.sh: Move include of dis-asm.h so it is generated earlier in gdbarch.h. (TARGET_PRINT_INSN): Multiarch. * gdbarch.h: Regenerate. * gdbarch.c: Regenerate. * arch-utils.c (legacy_print_insn): New function. * arch-utils.h (legacy_print_insn): Export. * cris-tdep.c (cris_delayed_get_disassembler): Use TARGET_PRINT_INSN, instead of tm_print_insn. * d10v-tdep.c (print_insn): Ditto. * d30v-tdep.c (print_insn): Ditto. * m32r-tdep.c (dump_insn): Ditto. * v850-tdep.c (v850_scan_prologue): Ditto. * mcore-tdep.c (mcore_dump_insn): Ditto. * sh-tdep.c (sh_gdbarch_init): Set print_insn gdbarch field.
This commit is contained in:
parent
a4f30b31c8
commit
2bf0cb6592
@ -1,3 +1,23 @@
|
||||
2001-09-05 Elena Zannoni <ezannoni@redhat.com>
|
||||
|
||||
* gdbarch.sh: Move include of dis-asm.h so it is generated earlier
|
||||
in gdbarch.h.
|
||||
(TARGET_PRINT_INSN): Multiarch.
|
||||
* gdbarch.h: Regenerate.
|
||||
* gdbarch.c: Regenerate.
|
||||
|
||||
* arch-utils.c (legacy_print_insn): New function.
|
||||
* arch-utils.h (legacy_print_insn): Export.
|
||||
|
||||
* cris-tdep.c (cris_delayed_get_disassembler): Use
|
||||
TARGET_PRINT_INSN, instead of tm_print_insn.
|
||||
* d10v-tdep.c (print_insn): Ditto.
|
||||
* d30v-tdep.c (print_insn): Ditto.
|
||||
* m32r-tdep.c (dump_insn): Ditto.
|
||||
* v850-tdep.c (v850_scan_prologue): Ditto.
|
||||
* mcore-tdep.c (mcore_dump_insn): Ditto.
|
||||
* sh-tdep.c (sh_gdbarch_init): Set print_insn gdbarch field.
|
||||
|
||||
2001-09-05 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* gdbtypes.h (struct type): Doc fix.
|
||||
|
@ -146,6 +146,13 @@ generic_prologue_frameless_p (CORE_ADDR ip)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* New/multi-arched targets should use the correct gdbarch field
|
||||
instead of using this global pointer. */
|
||||
int
|
||||
legacy_print_insn (bfd_vma vma, disassemble_info *info)
|
||||
{
|
||||
return (*tm_print_insn) (vma, info);
|
||||
}
|
||||
|
||||
/* Helper functions for INNER_THAN */
|
||||
|
||||
|
@ -47,6 +47,9 @@ extern gdbarch_return_value_on_stack_ftype generic_return_value_on_stack_not;
|
||||
/* Map onto old REGISTER_NAMES. */
|
||||
extern char *legacy_register_name (int i);
|
||||
|
||||
/* Accessor for old global function pointer for disassembly. */
|
||||
extern int legacy_print_insn (bfd_vma vma, disassemble_info *info);
|
||||
|
||||
/* Backward compatible call_dummy_words. */
|
||||
extern LONGEST legacy_call_dummy_words[];
|
||||
extern int legacy_sizeof_call_dummy_words;
|
||||
|
@ -3532,7 +3532,7 @@ static int
|
||||
cris_delayed_get_disassembler (bfd_vma addr, disassemble_info *info)
|
||||
{
|
||||
tm_print_insn = cris_get_disassembler (exec_bfd);
|
||||
return (*tm_print_insn) (addr, info);
|
||||
return TARGET_PRINT_INSN (addr, info);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1239,7 +1239,7 @@ print_insn (CORE_ADDR memaddr, struct ui_file *stream)
|
||||
tm_print_insn_info.endian = BFD_ENDIAN_BIG;
|
||||
else
|
||||
tm_print_insn_info.endian = BFD_ENDIAN_LITTLE;
|
||||
return (*tm_print_insn) (memaddr, &tm_print_insn_info);
|
||||
return TARGET_PRINT_INSN (memaddr, &tm_print_insn_info);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1156,7 +1156,7 @@ print_insn (CORE_ADDR memaddr, struct ui_file *stream)
|
||||
tm_print_insn_info.endian = BFD_ENDIAN_BIG;
|
||||
else
|
||||
tm_print_insn_info.endian = BFD_ENDIAN_LITTLE;
|
||||
return (*tm_print_insn) (memaddr, &tm_print_insn_info);
|
||||
return TARGET_PRINT_INSN (memaddr, &tm_print_insn_info);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -249,6 +249,7 @@ struct gdbarch
|
||||
gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr;
|
||||
gdbarch_addr_bits_remove_ftype *addr_bits_remove;
|
||||
gdbarch_software_single_step_ftype *software_single_step;
|
||||
gdbarch_print_insn_ftype *print_insn;
|
||||
gdbarch_skip_trampoline_code_ftype *skip_trampoline_code;
|
||||
};
|
||||
|
||||
@ -385,6 +386,7 @@ struct gdbarch startup_gdbarch =
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* startup_gdbarch() */
|
||||
};
|
||||
|
||||
@ -484,6 +486,7 @@ gdbarch_alloc (const struct gdbarch_info *info,
|
||||
gdbarch->extra_stack_alignment_needed = 1;
|
||||
gdbarch->convert_from_func_ptr_addr = core_addr_identity;
|
||||
gdbarch->addr_bits_remove = core_addr_identity;
|
||||
gdbarch->print_insn = legacy_print_insn;
|
||||
gdbarch->skip_trampoline_code = generic_skip_trampoline_code;
|
||||
/* gdbarch_alloc() */
|
||||
|
||||
@ -780,6 +783,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
||||
/* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */
|
||||
/* Skip verify of addr_bits_remove, invalid_p == 0 */
|
||||
/* Skip verify of software_single_step, has predicate */
|
||||
/* Skip verify of print_insn, invalid_p == 0 */
|
||||
/* Skip verify of skip_trampoline_code, invalid_p == 0 */
|
||||
}
|
||||
|
||||
@ -1472,6 +1476,12 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
||||
"SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p)",
|
||||
XSTRING (SOFTWARE_SINGLE_STEP (sig, insert_breakpoints_p)));
|
||||
#endif
|
||||
#ifdef TARGET_PRINT_INSN
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"TARGET_PRINT_INSN(vma, info)",
|
||||
XSTRING (TARGET_PRINT_INSN (vma, info)));
|
||||
#endif
|
||||
#ifdef SKIP_TRAMPOLINE_CODE
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
@ -2210,6 +2220,13 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
||||
(long) current_gdbarch->software_single_step
|
||||
/*SOFTWARE_SINGLE_STEP ()*/);
|
||||
#endif
|
||||
#ifdef TARGET_PRINT_INSN
|
||||
if (GDB_MULTI_ARCH)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: TARGET_PRINT_INSN = 0x%08lx\n",
|
||||
(long) current_gdbarch->print_insn
|
||||
/*TARGET_PRINT_INSN ()*/);
|
||||
#endif
|
||||
#ifdef SKIP_TRAMPOLINE_CODE
|
||||
if (GDB_MULTI_ARCH)
|
||||
fprintf_unfiltered (file,
|
||||
@ -4330,6 +4347,24 @@ set_gdbarch_software_single_step (struct gdbarch *gdbarch,
|
||||
gdbarch->software_single_step = software_single_step;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, disassemble_info *info)
|
||||
{
|
||||
if (gdbarch->print_insn == 0)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"gdbarch: gdbarch_print_insn invalid");
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_print_insn called\n");
|
||||
return gdbarch->print_insn (vma, info);
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_print_insn (struct gdbarch *gdbarch,
|
||||
gdbarch_print_insn_ftype print_insn)
|
||||
{
|
||||
gdbarch->print_insn = print_insn;
|
||||
}
|
||||
|
||||
CORE_ADDR
|
||||
gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc)
|
||||
{
|
||||
|
@ -35,6 +35,8 @@
|
||||
#ifndef GDBARCH_H
|
||||
#define GDBARCH_H
|
||||
|
||||
#include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
|
||||
|
||||
struct frame_info;
|
||||
struct value;
|
||||
|
||||
@ -1947,6 +1949,23 @@ extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_s
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (TARGET_PRINT_INSN)
|
||||
#define TARGET_PRINT_INSN(vma, info) (legacy_print_insn (vma, info))
|
||||
#endif
|
||||
|
||||
typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, disassemble_info *info);
|
||||
extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, disassemble_info *info);
|
||||
extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_PRINT_INSN)
|
||||
#error "Non multi-arch definition of TARGET_PRINT_INSN"
|
||||
#endif
|
||||
#if GDB_MULTI_ARCH
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_PRINT_INSN)
|
||||
#define TARGET_PRINT_INSN(vma, info) (gdbarch_print_insn (current_gdbarch, vma, info))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (SKIP_TRAMPOLINE_CODE)
|
||||
#define SKIP_TRAMPOLINE_CODE(pc) (generic_skip_trampoline_code (pc))
|
||||
@ -2205,8 +2224,6 @@ extern const struct bfd_arch_info *target_architecture;
|
||||
|
||||
/* The target-system-dependent disassembler is semi-dynamic */
|
||||
|
||||
#include "dis-asm.h" /* Get defs for disassemble_info */
|
||||
|
||||
extern int dis_asm_read_memory (bfd_vma memaddr, bfd_byte *myaddr,
|
||||
unsigned int len, disassemble_info *info);
|
||||
|
||||
@ -2218,9 +2235,6 @@ extern void dis_asm_print_address (bfd_vma addr,
|
||||
|
||||
extern int (*tm_print_insn) (bfd_vma, disassemble_info*);
|
||||
extern disassemble_info tm_print_insn_info;
|
||||
#ifndef TARGET_PRINT_INSN
|
||||
#define TARGET_PRINT_INSN(vma, info) (*tm_print_insn) (vma, info)
|
||||
#endif
|
||||
#ifndef TARGET_PRINT_INSN_INFO
|
||||
#define TARGET_PRINT_INSN_INFO (&tm_print_insn_info)
|
||||
#endif
|
||||
|
@ -539,6 +539,7 @@ f:2:ADDR_BITS_REMOVE:CORE_ADDR:addr_bits_remove:CORE_ADDR addr:addr:::core_addr_
|
||||
# FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the target can
|
||||
# single step. If not, then implement single step using breakpoints.
|
||||
F:2:SOFTWARE_SINGLE_STEP:void:software_single_step:enum target_signal sig, int insert_breakpoints_p:sig, insert_breakpoints_p::0:0
|
||||
f:2:TARGET_PRINT_INSN:int:print_insn:bfd_vma vma, disassemble_info *info:vma, info:::legacy_print_insn::0
|
||||
f:2:SKIP_TRAMPOLINE_CODE:CORE_ADDR:skip_trampoline_code:CORE_ADDR pc:pc:::generic_skip_trampoline_code::0
|
||||
EOF
|
||||
}
|
||||
@ -629,6 +630,8 @@ cat <<EOF
|
||||
#ifndef GDBARCH_H
|
||||
#define GDBARCH_H
|
||||
|
||||
#include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
|
||||
|
||||
struct frame_info;
|
||||
struct value;
|
||||
|
||||
@ -1048,8 +1051,6 @@ extern const struct bfd_arch_info *target_architecture;
|
||||
|
||||
/* The target-system-dependent disassembler is semi-dynamic */
|
||||
|
||||
#include "dis-asm.h" /* Get defs for disassemble_info */
|
||||
|
||||
extern int dis_asm_read_memory (bfd_vma memaddr, bfd_byte *myaddr,
|
||||
unsigned int len, disassemble_info *info);
|
||||
|
||||
@ -1061,9 +1062,6 @@ extern void dis_asm_print_address (bfd_vma addr,
|
||||
|
||||
extern int (*tm_print_insn) (bfd_vma, disassemble_info*);
|
||||
extern disassemble_info tm_print_insn_info;
|
||||
#ifndef TARGET_PRINT_INSN
|
||||
#define TARGET_PRINT_INSN(vma, info) (*tm_print_insn) (vma, info)
|
||||
#endif
|
||||
#ifndef TARGET_PRINT_INSN_INFO
|
||||
#define TARGET_PRINT_INSN_INFO (&tm_print_insn_info)
|
||||
#endif
|
||||
|
@ -60,7 +60,7 @@ dump_insn (char *commnt, CORE_ADDR pc, int insn)
|
||||
{
|
||||
printf_filtered (" %s %08x %08x ",
|
||||
commnt, (unsigned int) pc, (unsigned int) insn);
|
||||
(*tm_print_insn) (pc, &tm_print_insn_info);
|
||||
TARGET_PRINT_INSN (pc, &tm_print_insn_info);
|
||||
printf_filtered ("\n");
|
||||
}
|
||||
#define insn_debug(args) { printf_filtered args; }
|
||||
|
@ -167,7 +167,7 @@ mcore_dump_insn (char *commnt, CORE_ADDR pc, int insn)
|
||||
{
|
||||
printf_filtered ("MCORE: %s %08x %08x ",
|
||||
commnt, (unsigned int) pc, (unsigned int) insn);
|
||||
(*tm_print_insn) (pc, &tm_print_insn_info);
|
||||
TARGET_PRINT_INSN (pc, &tm_print_insn_info);
|
||||
printf_filtered ("\n");
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,6 @@
|
||||
#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
|
||||
|
||||
void (*sh_show_regs) (void);
|
||||
int (*print_sh_insn) (bfd_vma, disassemble_info*);
|
||||
CORE_ADDR (*skip_prologue_hard_way) (CORE_ADDR);
|
||||
void (*do_pseudo_register) (int);
|
||||
|
||||
@ -1928,7 +1927,7 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_use_struct_convention (gdbarch, sh_use_struct_convention);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
set_gdbarch_pop_frame (gdbarch, sh_pop_frame);
|
||||
print_sh_insn = gdb_print_insn_sh;
|
||||
set_gdbarch_print_insn (gdbarch, gdb_print_insn_sh);
|
||||
skip_prologue_hard_way = sh_skip_prologue_hard_way;
|
||||
do_pseudo_register = sh_do_pseudo_register;
|
||||
|
||||
@ -2125,7 +2124,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
|
||||
set_gdbarch_believe_pcc_promotion (gdbarch, 1);
|
||||
set_gdbarch_ieee_float (gdbarch, 1);
|
||||
tm_print_insn = print_sh_insn;
|
||||
|
||||
return gdbarch;
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ v850_scan_prologue (CORE_ADDR pc, struct prologue_info *pi)
|
||||
|
||||
#ifdef DEBUG
|
||||
printf_filtered ("0x%.8lx ", (long) current_pc);
|
||||
(*tm_print_insn) (current_pc, &tm_print_insn_info);
|
||||
TARGET_PRINT_INSN (current_pc, &tm_print_insn_info);
|
||||
#endif
|
||||
|
||||
insn = read_memory_unsigned_integer (current_pc, 2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user