https://sourceware.org/bugzilla/show_bug.cgi?id=21943
Bug ID: 21943 Summary: Memory leak in asymbol.name Product: binutils Version: 2.30 (HEAD) Status: NEW Severity: normal Priority: P2 Component: binutils Assignee: unassigned at sourceware dot org Reporter: qiyao at gcc dot gnu.org Target Milestone: --- $ valgrind --leak-check=full ./objdump -d /tmp/1.x86.exe .... ==20024== 50 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==20024== at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==20024== by 0x44E302: bfd_malloc (libbfd.c:193) ==20024== by 0x459987: elf_x86_64_get_synthetic_symtab (elf64-x86-64.c:6935) ==20024== by 0x408226: dump_bfd (objdump.c:3525) ==20024== by 0x408ACF: display_object_bfd (objdump.c:3603) ==20024== by 0x408ACF: display_any_bfd (objdump.c:3692) ==20024== by 0x40AD63: display_file (objdump.c:3713) ==20024== by 0x404E2D: main (objdump.c:4015) $ cat /tmp/1.c #include <stdio.h> int main (void) { printf ("hello\n"); return 0; } elf_x86_64_get_synthetic_symtab malloc asymbol.name, but caller of elf_x86_64_get_synthetic_symtab only free asymbol, so asymbol.name is leaked. Note that some targets don't leak, because their get_synthetic_symtab allocate memory for both asymbol and asymbol.name. AArch64, ARM and MIPS do so. $ valgrind --leak-check=full ./objdump -d /tmp/1.aarch64.exe .... ==20045== LEAK SUMMARY: ==20045== definitely lost: 0 bytes in 0 blocks ==20045== indirectly lost: 0 bytes in 0 blocks ==20045== possibly lost: 0 bytes in 0 blocks ==20045== still reachable: 744 bytes in 31 blocks ==20045== suppressed: 0 bytes in 0 blocks -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils