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.
This commit is contained in:
parent
103ebbc35c
commit
20135676fc
@ -1,3 +1,8 @@
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 24960
|
||||
* objdump.c (disassemble_data): Call disassemble_free_target.
|
||||
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* objdump.c (struct objdump_disasm_info): Delete "sec".
|
||||
|
@ -2730,6 +2730,7 @@ disassemble_data (bfd *abfd)
|
||||
if (aux.dynrelbuf != NULL)
|
||||
free (aux.dynrelbuf);
|
||||
free (sorted_syms);
|
||||
disassemble_free_target (&disasm_info);
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 24960
|
||||
* dis-asm.h (disassemble_free_target): Declare.
|
||||
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* dis-asm.h (struct disassemble_info): Delete insn_sets.
|
||||
|
@ -325,7 +325,10 @@ extern disassembler_ftype disassembler (enum bfd_architecture arc,
|
||||
|
||||
/* Amend the disassemble_info structure as necessary for the target architecture.
|
||||
Should only be called after initialising the info->arch field. */
|
||||
extern void disassemble_init_for_target (struct disassemble_info * dinfo);
|
||||
extern void disassemble_init_for_target (struct disassemble_info *);
|
||||
|
||||
/* Tidy any memory allocated by targets, such as info->private_data. */
|
||||
extern void disassemble_free_target (struct disassemble_info *);
|
||||
|
||||
/* Document any target specific options available from the disassembler. */
|
||||
extern void disassembler_usage (FILE *);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 24960
|
||||
* disassemble.c (disassemble_free_target): New function.
|
||||
|
||||
2019-12-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* cgen-dis.in (print_insn_@arch@): Replace insn_sets with private_data.
|
||||
|
@ -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 *
|
||||
|
Loading…
x
Reference in New Issue
Block a user