sim: aarch64/msp430: fix disassembler usage

The disasm framework reserves the private_data field for the disassemblers
themselves, not for people who use the disassembler.  Instead, there is an
application_data field for callers such as the sim.  Switch to it to avoid
random corruption/crashes when the disassemblers use private_data.
This commit is contained in:
Mike Frysinger 2015-12-27 01:41:27 -05:00
parent 5e744ef887
commit 5d01527536
4 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2015-12-27 Mike Frysinger <vapier@gentoo.org>
* interp.c (sim_dis_read): Change private_data to application_data.
(sim_create_inferior): Likewise.
2015-12-27 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (SIM_OBJS): Delete sim-hload.o.

View File

@ -85,7 +85,7 @@ sim_dis_read (bfd_vma memaddr,
unsigned int length,
struct disassemble_info * info)
{
aarch64_get_mem_blk (info->private_data, memaddr, (char *) ptr, length);
aarch64_get_mem_blk (info->application_data, memaddr, (char *) ptr, length);
return 0;
}
@ -207,7 +207,7 @@ sim_create_inferior (SIM_DESC sd, struct bfd *abfd, char **argv, char **env)
info.read_memory_func = sim_dis_read;
info.arch = bfd_get_arch (abfd);
info.mach = bfd_get_mach (abfd);
info.private_data = cpu;
info.application_data = cpu;
if (info.mach == 0)
info.arch = bfd_arch_aarch64;
disassemble_init_for_target (& info);

View File

@ -1,3 +1,8 @@
2015-12-27 Mike Frysinger <vapier@gentoo.org>
* msp430-sim.c (sim_dis_read): Change private_data to application_data.
(msp430_step_once): Likewise.
2015-12-27 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (SIM_OBJS): Delete sim-hload.o.

View File

@ -882,7 +882,7 @@ msp430_dis_read (bfd_vma memaddr,
unsigned int length,
struct disassemble_info *dinfo)
{
SIM_DESC sd = dinfo->private_data;
SIM_DESC sd = dinfo->application_data;
sim_core_read_buffer (sd, MSP430_CPU (sd), 0, myaddr, memaddr, length);
return 0;
}
@ -1154,7 +1154,7 @@ msp430_step_once (SIM_DESC sd)
sim_core_read_buffer (sd, MSP430_CPU (sd), 0, b, opcode_pc, opsize);
init_disassemble_info (&info, stderr, (fprintf_ftype) fprintf);
info.private_data = sd;
info.application_data = sd;
info.read_memory_func = msp430_dis_read;
fprintf (stderr, "%#8x ", opcode_pc);