mirror of
https://github.com/bminor/binutils-gdb.git
synced 2026-02-05 13:11:37 +00:00
gdb/coffread: simplify stab section detection
We look for stab sections for the sole purpose of emitting a warning if we see one. Simplify this by using a boolean to indicate if we saw a stab section or not. Simplify the search to just look for sections starting with ".stab", it should be enough for this purpose. Also, remove the make_scoped_restore that would overwrite the stab section vector, I'm not sure why it's there. It seems to me like it would cause the warning to never be shown. Change-Id: I56323189ffdaa2d06a96d457cdd999b23efa5979 Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -46,8 +46,6 @@ struct coff_symfile_info
|
||||
{
|
||||
file_ptr min_lineno_offset = 0; /* Where in file lowest line#s are. */
|
||||
file_ptr max_lineno_offset = 0; /* 1+last byte of line#s in file. */
|
||||
|
||||
std::vector<asection *> *stabsects; /* .stab sections. */
|
||||
};
|
||||
|
||||
/* Key for COFF-associated data. */
|
||||
@@ -200,39 +198,6 @@ static void read_one_sym (struct coff_symbol *,
|
||||
static void coff_symtab_read (minimal_symbol_reader &,
|
||||
file_ptr, unsigned int, struct objfile *);
|
||||
|
||||
/* We are called once per section from coff_symfile_read. We
|
||||
need to examine each section we are passed, check to see
|
||||
if it is something we are interested in processing, and
|
||||
if so, stash away some access information for the section.
|
||||
|
||||
FIXME: The section names should not be hardwired strings (what
|
||||
should they be? I don't think most object file formats have enough
|
||||
section flags to specify what kind of debug section it is
|
||||
-kingdon). */
|
||||
|
||||
static void
|
||||
coff_locate_sections (bfd *abfd, asection *sectp, void *csip)
|
||||
{
|
||||
struct coff_symfile_info *csi;
|
||||
const char *name;
|
||||
|
||||
csi = (struct coff_symfile_info *) csip;
|
||||
name = bfd_section_name (sectp);
|
||||
|
||||
if (startswith (name, ".stab"))
|
||||
{
|
||||
const char *s;
|
||||
|
||||
/* We can have multiple .stab sections if linked with
|
||||
--split-by-reloc. */
|
||||
for (s = name + sizeof ".stab" - 1; *s != '\0'; s++)
|
||||
if (!c_isdigit (*s))
|
||||
break;
|
||||
if (*s == '\0')
|
||||
csi->stabsects->push_back (sectp);
|
||||
}
|
||||
}
|
||||
|
||||
struct coff_find_targ_sec_arg
|
||||
{
|
||||
int targ_index;
|
||||
@@ -594,10 +559,6 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
info = coff_objfile_data_key.get (objfile);
|
||||
symfile_bfd = abfd; /* Kludge for swap routines. */
|
||||
|
||||
std::vector<asection *> stabsects;
|
||||
scoped_restore restore_stabsects
|
||||
= make_scoped_restore (&info->stabsects, &stabsects);
|
||||
|
||||
/* WARNING WILL ROBINSON! ACCESSING BFD-PRIVATE DATA HERE! FIXME! */
|
||||
num_symbols = bfd_get_symcount (abfd); /* How many syms */
|
||||
symtab_offset = cdata->sym_filepos; /* Symbol table file offset */
|
||||
@@ -674,10 +635,19 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
coff_read_minsyms (symtab_offset, num_symbols, objfile);
|
||||
|
||||
if (!(objfile->flags & OBJF_READNEVER))
|
||||
bfd_map_over_sections (abfd, coff_locate_sections, (void *) info);
|
||||
{
|
||||
bool found_stab_section = false;
|
||||
|
||||
if (!info->stabsects->empty())
|
||||
warning (_("stabs debug information is not supported."));
|
||||
for (asection *sect : gdb_bfd_sections (abfd))
|
||||
if (startswith (bfd_section_name (sect), ".stab"))
|
||||
{
|
||||
found_stab_section = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (found_stab_section)
|
||||
warning (_ ("stabs debug information is not supported."));
|
||||
}
|
||||
|
||||
if (dwarf2_initialize_objfile (objfile))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user