From 4ac9383206032dd0357602136af1e05e7701142b Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 24 Feb 2020 15:50:57 -0700 Subject: [PATCH] Fix a memory leak and remove an unused member I noticed that setup_type_unit_groups leaks the symtab vector -- it allocates this with XNEWVEC, but from what I can tell, nothing frees it. This patch changes it to use XOBNEWVEC. Also, the type_unit_unshareable::num_symtabs member is assigned but never read. So, this removes it. gdb/ChangeLog 2020-02-24 Tom Tromey * dwarf2/read.h (struct type_unit_unshareable) : Remove. * dwarf2/read.c (dwarf2_cu::setup_type_unit_groups): Use XOBNEWVEC. --- gdb/ChangeLog | 7 +++++++ gdb/dwarf2/read.c | 10 +++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2507b9c7dd0..1a159470e66 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-02-24 Tom Tromey + + * dwarf2/read.h (struct type_unit_unshareable) : + Remove. + * dwarf2/read.c (dwarf2_cu::setup_type_unit_groups): Use + XOBNEWVEC. + 2020-02-24 Tom Tromey * dwarf2/read.h (struct dwarf2_per_cu_data) : diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 0f514eafe88..d97956ecb6a 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -589,10 +589,6 @@ struct type_unit_group /* The data used to construct the hash key. */ struct stmt_list_hash hash; - /* The number of symtabs from the line header. - The value here must match line_header.num_file_names. */ - unsigned int num_symtabs; - /* The symbol tables for this TU (obtained from the files listed in DW_AT_stmt_list). WARNING: The order of entries here must match the order of entries @@ -10854,9 +10850,9 @@ dwarf2_cu::setup_type_unit_groups (struct die_info *die) process_full_type_unit still needs to know if this is the first time. */ - tu_group->num_symtabs = line_header->file_names_size (); - tu_group->symtabs = XNEWVEC (struct symtab *, - line_header->file_names_size ()); + tu_group->symtabs + = XOBNEWVEC (&COMPUNIT_OBJFILE (cust)->objfile_obstack, + struct symtab *, line_header->file_names_size ()); auto &file_names = line_header->file_names (); for (i = 0; i < file_names.size (); ++i) -- 2.30.2