From: Alan Modra Date: Tue, 14 Jan 2025 23:18:44 +0000 (+1030) Subject: disassemble_free_powerpc X-Git-Tag: binutils-2_44~90 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6cda040f1b9fa2da682a7721c6d511d420f5e889;p=thirdparty%2Fbinutils-gdb.git disassemble_free_powerpc This fixes leaks in a ppc disassembler buffer. I'm not sure now why I used a private buffer for section contents, but I'm not going to change that just now. * disassemble.h (disassemble_free_powerpc): Declare. * disassemble.c (disassemble_free_target): Call it. * ppc-dis.c (disassemble_free_powerpc): New function. --- diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c index b6ab3fbf6a8..98de1a772f9 100644 --- a/opcodes/disassemble.c +++ b/opcodes/disassemble.c @@ -767,6 +767,7 @@ disassemble_free_target (struct disassemble_info *info) #endif #ifdef ARCH_powerpc case bfd_arch_powerpc: + disassemble_free_powerpc (info); break; #endif #ifdef ARCH_riscv diff --git a/opcodes/disassemble.h b/opcodes/disassemble.h index 48c22622757..5fcd45ea5ae 100644 --- a/opcodes/disassemble.h +++ b/opcodes/disassemble.h @@ -105,6 +105,7 @@ extern disassembler_ftype rl78_get_disassembler (bfd *); extern disassembler_ftype riscv_get_disassembler (bfd *); extern void disassemble_free_riscv (disassemble_info *); +extern void disassemble_free_powerpc (disassemble_info *); extern void ATTRIBUTE_NORETURN opcodes_assert (const char *, int); diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c index 409c81d7070..3e210341228 100644 --- a/opcodes/ppc-dis.c +++ b/opcodes/ppc-dis.c @@ -537,6 +537,16 @@ disassemble_init_powerpc (struct disassemble_info *info) } } +void +disassemble_free_powerpc (struct disassemble_info *info) +{ + if (info->private_data != NULL) + { + free (private_data (info)->special[0].buf); + free (private_data (info)->special[1].buf); + } +} + /* Print a big endian PowerPC instruction. */ int