forked from Imagelibrary/binutils-gdb
* breakpoint.c, core.c, exec.c, language.c, main.c, printcmd.c,
symfile.c, target.c, valprint.c: Use _filtered form of *printf. defs.h, utils.c: Make vfprintf_filtered global.
This commit is contained in:
@@ -332,6 +332,27 @@ init_entry_point_info (objfile)
|
||||
}
|
||||
}
|
||||
|
||||
/* Remember the lowest-addressed loadable section we've seen.
|
||||
This function is called via bfd_map_over_sections. */
|
||||
|
||||
#if 0 /* Not used yet */
|
||||
static void
|
||||
find_lowest_section (abfd, sect, obj)
|
||||
bfd *abfd;
|
||||
asection *sect;
|
||||
PTR obj;
|
||||
{
|
||||
asection **lowest = (asection **)obj;
|
||||
|
||||
if (0 == (bfd_get_section_flags (abfd, sect) & SEC_LOAD))
|
||||
return;
|
||||
if (!*lowest)
|
||||
*lowest = sect; /* First loadable section */
|
||||
else if (bfd_section_vma (abfd, *lowest) >= bfd_section_vma (abfd, sect))
|
||||
*lowest = sect; /* A lower loadable section */
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Process a symbol file, as either the main file or as a dynamically
|
||||
loaded file.
|
||||
|
||||
@@ -351,7 +372,8 @@ syms_from_objfile (objfile, addr, mainline, verbo)
|
||||
int mainline;
|
||||
int verbo;
|
||||
{
|
||||
asection *text_sect;
|
||||
struct section_offsets *section_offsets;
|
||||
asection *lowest_sect;
|
||||
|
||||
/* There is a distinction between having no symbol table
|
||||
(we refuse to read the file, leaving the old set of symbols around)
|
||||
@@ -382,12 +404,40 @@ syms_from_objfile (objfile, addr, mainline, verbo)
|
||||
}
|
||||
|
||||
(*objfile -> sf -> sym_new_init) (objfile);
|
||||
}
|
||||
|
||||
/* For mainline, caller didn't know the specified address of the
|
||||
text section. We fix that here. */
|
||||
/* Convert addr into an offset rather than an absolute address.
|
||||
We find the lowest address of a loaded segment in the objfile,
|
||||
and assume that <addr> is where that got loaded. Due to historical
|
||||
precedent, we warn if that doesn't happen to be the ".text"
|
||||
segment. */
|
||||
|
||||
text_sect = bfd_get_section_by_name (objfile -> obfd, ".text");
|
||||
addr = bfd_section_vma (objfile -> obfd, text_sect);
|
||||
if (mainline)
|
||||
{
|
||||
addr = 0; /* No offset from objfile addresses. */
|
||||
}
|
||||
else
|
||||
{
|
||||
lowest_sect = bfd_get_section_by_name (objfile->obfd, ".text");
|
||||
#if 0
|
||||
lowest_sect = 0;
|
||||
bfd_map_over_sections (objfile->obfd, find_lowest_section,
|
||||
(PTR) &lowest_sect);
|
||||
#endif
|
||||
|
||||
if (lowest_sect == 0)
|
||||
warning ("no loadable sections found in added symbol-file %s",
|
||||
objfile->name);
|
||||
else if (0 == bfd_get_section_name (objfile->obfd, lowest_sect)
|
||||
|| 0 != strcmp(".text",
|
||||
bfd_get_section_name (objfile->obfd, lowest_sect)))
|
||||
warning ("Lowest section in %s is %s at 0x%x",
|
||||
objfile->name,
|
||||
bfd_section_name (objfile->obfd, lowest_sect),
|
||||
bfd_section_vma (objfile->obfd, lowest_sect));
|
||||
|
||||
if (lowest_sect)
|
||||
addr -= bfd_section_vma (objfile->obfd, lowest_sect);
|
||||
}
|
||||
|
||||
/* Initialize symbol reading routines for this objfile, allow complaints to
|
||||
@@ -396,7 +446,8 @@ syms_from_objfile (objfile, addr, mainline, verbo)
|
||||
|
||||
(*objfile -> sf -> sym_init) (objfile);
|
||||
clear_complaints (1, verbo);
|
||||
(*objfile -> sf -> sym_read) (objfile, addr, mainline);
|
||||
section_offsets = (*objfile -> sf -> sym_offsets) (objfile, addr);
|
||||
(*objfile -> sf -> sym_read) (objfile, section_offsets, mainline);
|
||||
|
||||
/* Don't allow char * to have a typename (else would get caddr_t.) */
|
||||
/* Ditto void *. FIXME should do this for all the builtin types. */
|
||||
@@ -491,6 +542,11 @@ symbol_file_add (name, from_tty, addr, mainline, mapped, readnow)
|
||||
&& !query ("Load new symbol table from \"%s\"? ", name))
|
||||
error ("Not confirmed.");
|
||||
|
||||
/* Getting new symbols may change our opinion about what is
|
||||
frameless. */
|
||||
|
||||
reinit_frame_cache ();
|
||||
|
||||
objfile = allocate_objfile (abfd, mapped);
|
||||
|
||||
/* If the objfile uses a mapped symbol file, and we have a psymtab for
|
||||
@@ -583,9 +639,11 @@ symbol_file_command (args, from_tty)
|
||||
error ("Not confirmed.");
|
||||
free_all_objfiles ();
|
||||
symfile_objfile = NULL;
|
||||
current_source_symtab = NULL;
|
||||
current_source_line = 0;
|
||||
if (from_tty)
|
||||
{
|
||||
printf ("No symbol file now.\n");
|
||||
printf_filtered ("No symbol file now.\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -622,9 +680,6 @@ symbol_file_command (args, from_tty)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Getting new symbols may change our opinion about what is
|
||||
frameless. */
|
||||
reinit_frame_cache ();
|
||||
symbol_file_add (name, from_tty, (CORE_ADDR)0, 1, mapped, readnow);
|
||||
}
|
||||
do_cleanups (cleanups);
|
||||
@@ -798,11 +853,6 @@ add_symbol_file_command (args, from_tty)
|
||||
name, local_hex_string (text_addr)))
|
||||
error ("Not confirmed.");
|
||||
|
||||
/* Getting new symbols may change our opinion about what is
|
||||
frameless. */
|
||||
|
||||
reinit_frame_cache ();
|
||||
|
||||
symbol_file_add (name, 0, text_addr, 0, mapped, readnow);
|
||||
}
|
||||
|
||||
@@ -1078,7 +1128,7 @@ clear_symtab_users_once ()
|
||||
return;
|
||||
clear_symtab_users_done = clear_symtab_users_queued;
|
||||
|
||||
printf ("Resetting debugger state after updating old symbol tables\n");
|
||||
printf_filtered ("Resetting debugger state after updating old symbol tables\n");
|
||||
|
||||
/* Someday, we should do better than this, by only blowing away
|
||||
the things that really need to be blown. */
|
||||
@@ -1252,10 +1302,10 @@ again2:
|
||||
|
||||
|
||||
struct partial_symtab *
|
||||
start_psymtab_common (objfile, addr,
|
||||
start_psymtab_common (objfile, section_offsets,
|
||||
filename, textlow, global_syms, static_syms)
|
||||
struct objfile *objfile;
|
||||
CORE_ADDR addr;
|
||||
struct section_offsets *section_offsets;
|
||||
char *filename;
|
||||
CORE_ADDR textlow;
|
||||
struct partial_symbol *global_syms;
|
||||
@@ -1264,7 +1314,7 @@ start_psymtab_common (objfile, addr,
|
||||
struct partial_symtab *psymtab;
|
||||
|
||||
psymtab = allocate_psymtab (filename, objfile);
|
||||
psymtab -> addr = addr;
|
||||
psymtab -> section_offsets = section_offsets;
|
||||
psymtab -> textlow = textlow;
|
||||
psymtab -> texthigh = psymtab -> textlow; /* default */
|
||||
psymtab -> globals_offset = global_syms - objfile -> global_psymbols.list;
|
||||
|
||||
Reference in New Issue
Block a user