Call disassemble_free_target in gdb
Commit 20135676fc
("PR24960, Memory leak
from disassembler") added "disassemble_free_target" to opcodes. This
is used to free target-specific data when finished with a
disassembler.
This patch changes gdb to call this function where needed.
gdb/ChangeLog
2020-01-19 Tom Tromey <tom@tromey.com>
* disasm.c (~gdb_disassembler): New destructor.
(gdb_buffered_insn_length): Call disassemble_free_target.
* disasm.h (class gdb_disassembler): Declare destructor. Use
DISABLE_COPY_AND_ASSIGN.
Change-Id: I245ba5b7dec5e5d9f29cd21832c6e2b4fecef047
This commit is contained in:
parent
c0ab21c22b
commit
4d89c1c79f
|
@ -1,3 +1,10 @@
|
|||
2020-01-19 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* disasm.c (~gdb_disassembler): New destructor.
|
||||
(gdb_buffered_insn_length): Call disassemble_free_target.
|
||||
* disasm.h (class gdb_disassembler): Declare destructor. Use
|
||||
DISABLE_COPY_AND_ASSIGN.
|
||||
|
||||
2020-01-19 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2read.c (abbrev_table_up): Move typedef earlier.
|
||||
|
|
|
@ -781,6 +781,11 @@ gdb_disassembler::gdb_disassembler (struct gdbarch *gdbarch,
|
|||
disassemble_init_for_target (&m_di);
|
||||
}
|
||||
|
||||
gdb_disassembler::~gdb_disassembler ()
|
||||
{
|
||||
disassemble_free_target (&m_di);
|
||||
}
|
||||
|
||||
int
|
||||
gdb_disassembler::print_insn (CORE_ADDR memaddr,
|
||||
int *branch_delay_insns)
|
||||
|
@ -908,7 +913,9 @@ gdb_buffered_insn_length (struct gdbarch *gdbarch,
|
|||
gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr,
|
||||
&disassembler_options_holder);
|
||||
|
||||
return gdbarch_print_insn (gdbarch, addr, &di);
|
||||
int result = gdbarch_print_insn (gdbarch, addr, &di);
|
||||
disassemble_free_target (&di);
|
||||
return result;
|
||||
}
|
||||
|
||||
char *
|
||||
|
|
|
@ -47,6 +47,10 @@ public:
|
|||
: gdb_disassembler (gdbarch, file, dis_asm_read_memory)
|
||||
{}
|
||||
|
||||
~gdb_disassembler ();
|
||||
|
||||
DISABLE_COPY_AND_ASSIGN (gdb_disassembler);
|
||||
|
||||
int print_insn (CORE_ADDR memaddr, int *branch_delay_insns = NULL);
|
||||
|
||||
/* Return the gdbarch of gdb_disassembler. */
|
||||
|
|
Loading…
Reference in New Issue