Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Unified Diff: gdb/objfiles.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/objfiles.h ('k') | gdb/observer.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/objfiles.c
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index afe4fb4322bcdfe0e660bcf0f91839fe4f2f2818..f5e5c75b86f4f64acdc91eb6c8d3c90ab27a150c 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
{
@@ -342,29 +326,6 @@ entry_point_address (void)
return retval;
}
-/* Create the terminating entry of OBJFILE's minimal symbol table.
- If OBJFILE->msymbols is zero, allocate a single entry from
- OBJFILE->objfile_obstack; otherwise, just initialize
- OBJFILE->msymbols[OBJFILE->minimal_symbol_count]. */
-void
-terminate_minimal_symbol_table (struct objfile *objfile)
-{
- if (! objfile->msymbols)
- objfile->msymbols = ((struct minimal_symbol *)
- obstack_alloc (&objfile->objfile_obstack,
- sizeof (objfile->msymbols[0])));
-
- {
- struct minimal_symbol *m
- = &objfile->msymbols[objfile->minimal_symbol_count];
-
- memset (m, 0, sizeof (*m));
- /* Don't rely on these enumeration values being 0's. */
- MSYMBOL_TYPE (m) = mst_unknown;
- SYMBOL_SET_LANGUAGE (m, language_unknown);
- }
-}
-
/* Iterator on PARENT and every separate debug objfile of PARENT.
The usage pattern is:
for (objfile = parent;
@@ -769,7 +730,9 @@ objfile_relocate1 (struct objfile *objfile,
BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
- ALL_BLOCK_SYMBOLS (b, iter, sym)
+ /* We only want to iterate over the local symbols, not any
+ symbols in included symtabs. */
+ ALL_DICT_SYMBOLS (BLOCK_DICT (b), iter, sym)
{
relocate_one_symbol (sym, objfile, delta);
}
@@ -834,6 +797,11 @@ objfile_relocate1 (struct objfile *objfile,
obj_section_addr (s));
}
+ /* Relocating probes. */
+ if (objfile->sf && objfile->sf->sym_probe_fns)
+ objfile->sf->sym_probe_fns->sym_relocate_probe (objfile,
+ new_offsets, delta);
+
/* Data changed. */
return 1;
}
@@ -1115,7 +1083,7 @@ insert_section_p (const struct bfd *abfd,
{
const bfd_vma lma = bfd_section_lma (abfd, section);
- if (lma != 0 && lma != bfd_section_vma (abfd, section)
+ if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
&& (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
/* This is an overlay section. IN_MEMORY check is needed to avoid
discarding sections from the "system supplied DSO" (aka vdso)
@@ -1557,6 +1525,31 @@ gdb_bfd_unref (struct bfd *abfd)
xfree (name);
}
+/* The default implementation for the "iterate_over_objfiles_in_search_order"
+ gdbarch method. It is equivalent to use the ALL_OBJFILES macro,
+ searching the objfiles in the order they are stored internally,
+ ignoring CURRENT_OBJFILE.
+
+ On most platorms, it should be close enough to doing the best
+ we can without some knowledge specific to the architecture. */
+
+void
+default_iterate_over_objfiles_in_search_order
+ (struct gdbarch *gdbarch,
+ iterate_over_objfiles_in_search_order_cb_ftype *cb,
+ void *cb_data, struct objfile *current_objfile)
+{
+ int stop = 0;
+ struct objfile *objfile;
+
+ ALL_OBJFILES (objfile)
+ {
+ stop = cb (objfile, cb_data);
+ if (stop)
+ return;
+ }
+}
+
/* Provide a prototype to silence -Wmissing-prototypes. */
extern initialize_file_ftype _initialize_objfiles;
« no previous file with comments | « gdb/objfiles.h ('k') | gdb/observer.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698