22#include "gdbsupport/selftest.h"
36static const gdb_byte *
40 const gdb_byte *insn =
nullptr;
46 static const gdb_byte bfin_insn[] = {0x17, 0xe1, 0xff, 0xff};
49 *len =
sizeof (bfin_insn);
53 static const gdb_byte arm_insn[] = {0x0, 0x0, 0xa0, 0xe3};
56 *len =
sizeof (arm_insn);
84 static const gdb_byte s390_insn[] = {0x07, 0x07};
87 *len =
sizeof (s390_insn);
89 case bfd_arch_xstormy16:
91 static const gdb_byte xstormy16_insn[] = {0x0, 0x0};
93 insn = xstormy16_insn;
94 *len =
sizeof (xstormy16_insn);
126 if (info->bits_per_address > sizeof (bfd_vma) * CHAR_BIT)
144 it =
static_cast<enum
gdb_osabi>(
static_cast<int>(it) + 1))
184 SELF_CHECK (*len > 0);
209 const gdb_byte *insn,
213 gdb_disassembler_test::read_memory),
214 m_insn (insn), m_len (len)
219 print_insn (CORE_ADDR memaddr)
231 const gdb_byte *m_insn;
236 static int read_memory (bfd_vma memaddr, gdb_byte *myaddr,
238 struct disassemble_info *info)
noexcept
240 gdb_disassembler_test *self
241 =
static_cast<gdb_disassembler_test *
>(info->application_data);
246 for (
size_t i = 0; i < len; i++)
247 myaddr[i] = self->m_insn[(memaddr + i) % self->m_len];
253 gdb_disassembler_test di (
gdbarch, insn, len);
255 SELF_CHECK (di.print_insn (0) == len);
277 CORE_ADDR insn_address = 0;
281 SELF_CHECK (calculated_len == buf_len);
294 gdb_disassembler_test::read_memory)
298 static int read_memory (bfd_vma memaddr, gdb_byte *myaddr,
300 struct disassemble_info *info)
noexcept
313 if (info->bits_per_address > sizeof (bfd_vma) * CHAR_BIT)
317 gdb_disassembler_test di (
gdbarch);
318 bool saw_memory_error =
false;
324 catch (
const gdb_exception_error &ex)
326 if (ex.error == MEMORY_ERROR)
327 saw_memory_error =
true;
331 SELF_CHECK (saw_memory_error);
struct gdbarch * gdbarch_find_by_info(struct gdbarch_info info)
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
void _initialize_disasm_selftests()
int gdb_buffered_insn_length(struct gdbarch *gdbarch, const gdb_byte *insn, int max_len, CORE_ADDR addr)
const gdb_byte * gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, int kind, int *size)
const struct bfd_arch_info * gdbarch_bfd_arch_info(struct gdbarch *gdbarch)
int gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr)
static void buffered_insn_length_test(struct gdbarch *gdbarch)
static void memory_error_test(struct gdbarch *gdbarch)
static const gdb_byte * get_test_insn(struct gdbarch *gdbarch, size_t *len)
static void print_one_insn_test(struct gdbarch *gdbarch)
void register_test_foreach_arch(const std::string &name, self_test_foreach_arch_function *function)
bool has_gdb_osabi_handler(struct gdbarch_info info)
int print_insn(CORE_ADDR memaddr, int *branch_delay_insns=NULL)