aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/objfiles.c32
-rw-r--r--gdb/objfiles.h21
-rw-r--r--gdb/symfile.c9
4 files changed, 27 insertions, 42 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e09310a..52e0d74 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2012-02-20 Doug Evans <dje@google.com>
+ * objfiles.c (add_to_objfile_sections): Remove outdated comments.
+ Rename objfile_p_char parameter to objfilep.
+ (build_objfile_section_table): Result is now void. All callers
+ updated.
+ * objfiles.h (struct objfile): Tweak comments, whitespace.
+ (build_objfile_section_table): Update.
+
* elfread.c (elf_symfile_segments): Fix warning text.
2012-02-20 Tom Tromey <tromey@redhat.com>
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 1cf5aee..e29b3a7 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -105,13 +105,6 @@ get_objfile_pspace_data (struct program_space *pspace)
return info;
}
-/* Records whether any objfiles appeared or disappeared since we last updated
- address to obj section map. */
-
-/* Locate all mappable sections of a BFD file.
- objfile_p_char is a char * to get it through
- bfd_map_over_sections; we cast it back to its proper type. */
-
/* Called via bfd_map_over_sections to build up the section table that
the objfile references. The objfile contains pointers to the start
of the table (objfile->sections) and to the first location after
@@ -119,19 +112,18 @@ get_objfile_pspace_data (struct program_space *pspace)
static void
add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect,
- void *objfile_p_char)
+ void *objfilep)
{
- struct objfile *objfile = (struct objfile *) objfile_p_char;
+ struct objfile *objfile = (struct objfile *) objfilep;
struct obj_section section;
flagword aflag;
aflag = bfd_get_section_flags (abfd, asect);
-
if (!(aflag & SEC_ALLOC))
return;
-
- if (0 == bfd_section_size (abfd, asect))
+ if (bfd_section_size (abfd, asect) == 0)
return;
+
section.objfile = objfile;
section.the_bfd_section = asect;
section.ovly_mapped = 0;
@@ -142,11 +134,9 @@ add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect,
}
/* Builds a section table for OBJFILE.
- Returns 0 if OK, 1 on error (in which case bfd_error contains the
- error).
Note that while we are building the table, which goes into the
- psymbol obstack, we hijack the sections_end pointer to instead hold
+ objfile obstack, we hijack the sections_end pointer to instead hold
a count of the number of sections. When bfd_map_over_sections
returns, this count is used to compute the pointer to the end of
the sections table, which then overwrites the count.
@@ -154,10 +144,10 @@ add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect,
Also note that the OFFSET and OVLY_MAPPED in each table entry
are initialized to zero.
- Also note that if anything else writes to the psymbol obstack while
+ Also note that if anything else writes to the objfile obstack while
we are building the table, we're pretty much hosed. */
-int
+void
build_objfile_section_table (struct objfile *objfile)
{
objfile->sections_end = 0;
@@ -165,7 +155,6 @@ build_objfile_section_table (struct objfile *objfile)
add_to_objfile_sections, (void *) objfile);
objfile->sections = obstack_finish (&objfile->objfile_obstack);
objfile->sections_end = objfile->sections + (size_t) objfile->sections_end;
- return (0);
}
/* Given a pointer to an initialized bfd (ABFD) and some flag bits
@@ -216,12 +205,7 @@ allocate_objfile (bfd *abfd, int flags)
objfile->mtime = bfd_get_mtime (abfd);
/* Build section table. */
-
- if (build_objfile_section_table (objfile))
- {
- error (_("Can't find the file sections in `%s': %s"),
- objfile->name, bfd_errmsg (bfd_get_error ()));
- }
+ build_objfile_section_table (objfile);
}
else
{
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index aba1791..d5c807f 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -327,13 +327,13 @@ struct objfile
unsigned num_data;
/* Set of relocation offsets to apply to each section.
- Currently on the objfile_obstack (which makes no sense, but I'm
- not sure it's harming anything).
+ The table is indexed by the_bfd_section->index, thus it is generally
+ as large as the number of sections in the binary.
+ The table is stored on the objfile_obstack.
These offsets indicate that all symbols (including partial and
minimal symbols) which have been read have been relocated by this
- much. Symbols which are yet to be read need to be relocated by
- it. */
+ much. Symbols which are yet to be read need to be relocated by it. */
struct section_offsets *section_offsets;
int num_sections;
@@ -354,12 +354,11 @@ struct objfile
among other things, is used to map pc addresses into sections.
SECTIONS points to the first entry in the table, and
SECTIONS_END points to the first location past the last entry
- in the table. Currently the table is stored on the
- objfile_obstack (which makes no sense, but I'm not sure it's
- harming anything). */
+ in the table. The table is stored on the objfile_obstack.
+ There is no particular order to the sections in this table, and it
+ only contains sections we care about (e.g. non-empty, SEC_ALLOC). */
- struct obj_section
- *sections, *sections_end;
+ struct obj_section *sections, *sections_end;
/* GDB allows to have debug symbols in separate object files. This is
used by .gnu_debuglink, ELF build id note and Mach-O OSO.
@@ -381,7 +380,7 @@ struct objfile
struct objfile *separate_debug_objfile_link;
/* Place to stash various statistics about this objfile. */
- OBJSTATS;
+ OBJSTATS;
/* A linked list of symbols created when reading template types or
function templates. These symbols are not stored in any symbol
@@ -450,7 +449,7 @@ extern int entry_point_address_query (CORE_ADDR *entry_p);
extern CORE_ADDR entry_point_address (void);
-extern int build_objfile_section_table (struct objfile *);
+extern void build_objfile_section_table (struct objfile *);
extern void terminate_minimal_symbol_table (struct objfile *objfile);
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 11ddfe8..ad46748 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2605,14 +2605,9 @@ reread_symbols (void)
/* obstack_init also initializes the obstack so it is
empty. We could use obstack_specify_allocation but
- gdb_obstack.h specifies the alloc/dealloc
- functions. */
+ gdb_obstack.h specifies the alloc/dealloc functions. */
obstack_init (&objfile->objfile_obstack);
- if (build_objfile_section_table (objfile))
- {
- error (_("Can't find the file sections in `%s': %s"),
- objfile->name, bfd_errmsg (bfd_get_error ()));
- }
+ build_objfile_section_table (objfile);
terminate_minimal_symbol_table (objfile);
/* We use the same section offsets as from last time. I'm not