diff options
author | Alan Modra <amodra@gmail.com> | 2019-12-09 20:34:49 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-12-10 09:07:29 +1030 |
commit | 20135676fc4c3912297c313b3e0d3cbd6cc402e3 (patch) | |
tree | 5073836e171a6fa7adbe05c60c23580e14defe79 /opcodes/disassemble.c | |
parent | 103ebbc35cc1975442e1e6233207d8d7b2016556 (diff) | |
download | gdb-20135676fc4c3912297c313b3e0d3cbd6cc402e3.zip gdb-20135676fc4c3912297c313b3e0d3cbd6cc402e3.tar.gz gdb-20135676fc4c3912297c313b3e0d3cbd6cc402e3.tar.bz2 |
PR24960, Memory leak from disassembler
PR 24960
include/
* dis-asm.h (disassemble_free_target): Declare.
opcodes/
* disassemble.c (disassemble_free_target): New function.
binutils/
* objdump.c (disassemble_data): Call disassemble_free_target.
Diffstat (limited to 'opcodes/disassemble.c')
-rw-r--r-- | opcodes/disassemble.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c index f131ee8..7c91997 100644 --- a/opcodes/disassemble.c +++ b/opcodes/disassemble.c @@ -716,6 +716,65 @@ disassemble_init_for_target (struct disassemble_info * info) } } +void +disassemble_free_target (struct disassemble_info *info) +{ + if (info == NULL) + return; + + switch (info->arch) + { + default: + return; + +#ifdef ARCH_bpf + case bfd_arch_bpf: +#endif +#ifdef ARCH_m32c + case bfd_arch_m32c: +#endif +#if defined ARCH_bpf || defined ARCH_m32c + if (info->private_data) + { + CGEN_BITSET *mask = info->private_data; + free (mask->bits); + } + break; +#endif + +#ifdef ARCH_arc + case bfd_arch_arc: + break; +#endif +#ifdef ARCH_cris + case bfd_arch_cris: + break; +#endif +#ifdef ARCH_mmix + case bfd_arch_mmix: + break; +#endif +#ifdef ARCH_nfp + case bfd_arch_nfp: + break; +#endif +#ifdef ARCH_powerpc + case bfd_arch_powerpc: + break; +#endif +#ifdef ARCH_riscv + case bfd_arch_riscv: + break; +#endif +#ifdef ARCH_rs6000 + case bfd_arch_rs6000: + break; +#endif + } + + free (info->private_data); +} + /* Remove whitespace and consecutive commas from OPTIONS. */ char * |