summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/disasm.c9
-rw-r--r--gdb/disasm.h4
3 files changed, 19 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0fd5dffc820..93a125b3e7d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
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.
(die_reader_func_ftype): Remove.
(cutu_reader): New class.
diff --git a/gdb/disasm.c b/gdb/disasm.c
index 7dfbd2fb472..e45c8400689 100644
--- a/gdb/disasm.c
+++ b/gdb/disasm.c
@@ -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 *
diff --git a/gdb/disasm.h b/gdb/disasm.h
index 0bda4df58ca..b0f535eaa21 100644
--- a/gdb/disasm.h
+++ b/gdb/disasm.h
@@ -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. */