From a5b1fd27801326156c2263b867297e80bcf9fe3d Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Tue, 3 Jun 2014 13:48:12 -0700 Subject: [PATCH] resize_section_table cleanup * exec.c (exec_close_1): Call clear_section_table instead of resize_section_table. (clear_section_table): New function. (resize_section_table): Make static. Rename arg num_added to adjustment. * exec.h (clear_section_table): Declare. (resize_section_table): Delete. * progspace.c (release_program_space): Call clear_section_table instead of resize_section_table. --- gdb/ChangeLog | 12 ++++++++++++ gdb/exec.c | 32 +++++++++++++++++++------------- gdb/exec.h | 5 ++--- gdb/progspace.c | 3 +-- 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 93a89a9..c192812 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2014-06-03 Doug Evans + + * exec.c (exec_close_1): Call clear_section_table instead of + resize_section_table. + (clear_section_table): New function. + (resize_section_table): Make static. Rename arg num_added to + adjustment. + * exec.h (clear_section_table): Declare. + (resize_section_table): Delete. + * progspace.c (release_program_space): Call clear_section_table + instead of resize_section_table. + 2014-06-03 Siva Chandra Reddy * NEWS (Python Scripting): Add entry about the new xmethods diff --git a/gdb/exec.c b/gdb/exec.c index ca59c72..087c122 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -125,12 +125,7 @@ exec_close_1 (struct target_ops *self) ALL_PSPACES (ss) { set_current_program_space (ss); - - /* Delete all target sections. */ - resize_section_table - (current_target_sections, - -resize_section_table (current_target_sections, 0)); - + clear_section_table (current_target_sections); exec_close (); } @@ -366,15 +361,29 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect, (*table_pp)++; } -int -resize_section_table (struct target_section_table *table, int num_added) +/* See exec.h. */ + +void +clear_section_table (struct target_section_table *table) +{ + xfree (table->sections); + table->sections = table->sections_end = NULL; +} + +/* Resize section table TABLE by ADJUSTMENT. + ADJUSTMENT may be negative, in which case the caller must have already + removed the sections being deleted. + Returns the old size. */ + +static int +resize_section_table (struct target_section_table *table, int adjustment) { int old_count; int new_count; old_count = table->sections_end - table->sections; - new_count = num_added + old_count; + new_count = adjustment + old_count; if (new_count) { @@ -383,10 +392,7 @@ resize_section_table (struct target_section_table *table, int num_added) table->sections_end = table->sections + new_count; } else - { - xfree (table->sections); - table->sections = table->sections_end = NULL; - } + clear_section_table (table); return old_count; } diff --git a/gdb/exec.h b/gdb/exec.h index 44f1367..304310f 100644 --- a/gdb/exec.h +++ b/gdb/exec.h @@ -41,10 +41,9 @@ extern struct target_ops exec_ops; extern int build_section_table (struct bfd *, struct target_section **, struct target_section **); -/* Resize the section table held by TABLE, by NUM_ADDED. Returns the - old size. */ +/* Remove all entries from TABLE. */ -extern int resize_section_table (struct target_section_table *, int); +extern void clear_section_table (struct target_section_table *table); /* Read from mappable read-only sections of BFD executable files. Return TARGET_XFER_OK, if read is successful. Return diff --git a/gdb/progspace.c b/gdb/progspace.c index 88f59f4..a74b6ab 100644 --- a/gdb/progspace.c +++ b/gdb/progspace.c @@ -160,8 +160,7 @@ release_program_space (struct program_space *pspace) free_all_objfiles (); if (!gdbarch_has_shared_address_space (target_gdbarch ())) free_address_space (pspace->aspace); - resize_section_table (&pspace->target_sections, - -resize_section_table (&pspace->target_sections, 0)); + clear_section_table (&pspace->target_sections); clear_program_space_solib_cache (pspace); /* Discard any data modules have associated with the PSPACE. */ program_space_free_data (pspace); -- 2.7.4