projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use an accessor function for general_symbol_info::language
[deliverable/binutils-gdb.git]
/
gdb
/
dbxread.c
diff --git
a/gdb/dbxread.c
b/gdb/dbxread.c
index e004e8cb93e517aec1457e2286d6c4e09dbc6594..ecfa89ae0cd0269679c5bd9b8434a9c35a1099fa 100644
(file)
--- a/
gdb/dbxread.c
+++ b/
gdb/dbxread.c
@@
-1,5
+1,5
@@
/* Read dbx symbol tables and convert to internal format, for GDB.
/* Read dbx symbol tables and convert to internal format, for GDB.
- Copyright (C) 1986-201
8
Free Software Foundation, Inc.
+ Copyright (C) 1986-201
9
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-61,7
+61,7
@@
/* Key for dbx-associated data. */
/* Key for dbx-associated data. */
-
const struct objfile_data *
dbx_objfile_data_key;
+
objfile_key<dbx_symfile_info>
dbx_objfile_data_key;
/* We put a pointer to this structure in the read_symtab_private field
of the psymtab. */
/* We put a pointer to this structure in the read_symtab_private field
of the psymtab. */
@@
-207,10
+207,10
@@
find_text_range (bfd * sym_bfd, struct objfile *objfile)
CORE_ADDR end = 0;
for (sec = sym_bfd->sections; sec; sec = sec->next)
CORE_ADDR end = 0;
for (sec = sym_bfd->sections; sec; sec = sec->next)
- if (bfd_
get_section_flags (sym_bfd,
sec) & SEC_CODE)
+ if (bfd_
section_flags (
sec) & SEC_CODE)
{
{
- CORE_ADDR sec_start = bfd_section_vma (s
ym_bfd, s
ec);
- CORE_ADDR sec_end = sec_start + bfd_section_size (s
ym_bfd, s
ec);
+ CORE_ADDR sec_start = bfd_section_vma (sec);
+ CORE_ADDR sec_end = sec_start + bfd_section_size (sec);
if (found_any)
{
if (found_any)
{
@@
-298,9
+298,7
@@
static void add_old_header_file (const char *, int);
static void add_this_object_header_file (int);
static struct partial_symtab *start_psymtab (struct objfile *, const char *,
static void add_this_object_header_file (int);
static struct partial_symtab *start_psymtab (struct objfile *, const char *,
- CORE_ADDR, int,
- std::vector<partial_symbol *> &,
- std::vector<partial_symbol *> &);
+ CORE_ADDR, int);
/* Free up old header file tables. */
/* Free up old header file tables. */
@@
-538,9
+536,7
@@
dbx_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
perror_with_name (objfile_name (objfile));
/* Size the symbol table. */
perror_with_name (objfile_name (objfile));
/* Size the symbol table. */
- if (objfile->global_psymbols.capacity () == 0
- && objfile->static_psymbols.capacity () == 0)
- init_psymbol_list (objfile, DBX_SYMCOUNT (objfile));
+ init_psymbol_list (objfile, DBX_SYMCOUNT (objfile));
symbol_size = DBX_SYMBOL_SIZE (objfile);
symbol_table_offset = DBX_SYMTAB_OFFSET (objfile);
symbol_size = DBX_SYMBOL_SIZE (objfile);
symbol_table_offset = DBX_SYMTAB_OFFSET (objfile);
@@
-591,14
+587,12
@@
dbx_symfile_init (struct objfile *objfile)
{
int val;
bfd *sym_bfd = objfile->obfd;
{
int val;
bfd *sym_bfd = objfile->obfd;
- char *name = bfd_get_filename (sym_bfd);
+ c
onst c
har *name = bfd_get_filename (sym_bfd);
asection *text_sect;
unsigned char size_temp[DBX_STRINGTAB_SIZE_SIZE];
asection *text_sect;
unsigned char size_temp[DBX_STRINGTAB_SIZE_SIZE];
- struct dbx_symfile_info *dbx;
/* Allocate struct to keep track of the symfile. */
/* Allocate struct to keep track of the symfile. */
- dbx = XCNEW (struct dbx_symfile_info);
- set_objfile_data (objfile, dbx_objfile_data_key, dbx);
+ dbx_objfile_data_key.emplace (objfile);
DBX_TEXT_SECTION (objfile) = bfd_get_section_by_name (sym_bfd, ".text");
DBX_DATA_SECTION (objfile) = bfd_get_section_by_name (sym_bfd, ".data");
DBX_TEXT_SECTION (objfile) = bfd_get_section_by_name (sym_bfd, ".text");
DBX_DATA_SECTION (objfile) = bfd_get_section_by_name (sym_bfd, ".data");
@@
-613,8
+607,8
@@
dbx_symfile_init (struct objfile *objfile)
text_sect = bfd_get_section_by_name (sym_bfd, ".text");
if (!text_sect)
error (_("Can't find .text section in symbol file"));
text_sect = bfd_get_section_by_name (sym_bfd, ".text");
if (!text_sect)
error (_("Can't find .text section in symbol file"));
- DBX_TEXT_ADDR (objfile) = bfd_section_vma (
sym_bfd,
text_sect);
- DBX_TEXT_SIZE (objfile) = bfd_section_size (
sym_bfd,
text_sect);
+ DBX_TEXT_ADDR (objfile) = bfd_section_vma (text_sect);
+ DBX_TEXT_SIZE (objfile) = bfd_section_size (text_sect);
DBX_SYMBOL_SIZE (objfile) = obj_symbol_entry_size (sym_bfd);
DBX_SYMCOUNT (objfile) = bfd_get_symcount (sym_bfd);
DBX_SYMBOL_SIZE (objfile) = obj_symbol_entry_size (sym_bfd);
DBX_SYMCOUNT (objfile) = bfd_get_symcount (sym_bfd);
@@
-707,15
+701,12
@@
dbx_symfile_finish (struct objfile *objfile)
free_header_files ();
}
free_header_files ();
}
-static void
-dbx_free_symfile_info (struct objfile *objfile, void *arg)
+dbx_symfile_info::~dbx_symfile_info ()
{
{
- struct dbx_symfile_info *dbx = (struct dbx_symfile_info *) arg;
-
- if (dbx->header_files != NULL)
+ if (header_files != NULL)
{
{
- int i =
dbx->
n_header_files;
- struct header_file *hfiles =
dbx->
header_files;
+ int i = n_header_files;
+ struct header_file *hfiles = header_files;
while (--i >= 0)
{
while (--i >= 0)
{
@@
-724,8
+715,6
@@
dbx_free_symfile_info (struct objfile *objfile, void *arg)
}
xfree (hfiles);
}
}
xfree (hfiles);
}
-
- xfree (dbx);
}
\f
}
\f
@@
-751,7
+740,8
@@
static char *stringtab_global;
/* These variables are used to control fill_symbuf when the stabs
symbols are not contiguous (as may be the case when a COFF file is
linked using --split-by-reloc). */
/* These variables are used to control fill_symbuf when the stabs
symbols are not contiguous (as may be the case when a COFF file is
linked using --split-by-reloc). */
-static struct stab_section_list *symbuf_sections;
+static const std::vector<asection *> *symbuf_sections;
+static size_t sect_idx;
static unsigned int symbuf_left;
static unsigned int symbuf_read;
static unsigned int symbuf_left;
static unsigned int symbuf_read;
@@
-787,13
+777,13
@@
fill_symbuf (bfd *sym_bfd)
{
if (symbuf_left <= 0)
{
{
if (symbuf_left <= 0)
{
- file_ptr filepos =
symbuf_sections->section
->filepos;
+ file_ptr filepos =
(*symbuf_sections)[sect_idx]
->filepos;
if (bfd_seek (sym_bfd, filepos, SEEK_SET) != 0)
perror_with_name (bfd_get_filename (sym_bfd));
if (bfd_seek (sym_bfd, filepos, SEEK_SET) != 0)
perror_with_name (bfd_get_filename (sym_bfd));
- symbuf_left = bfd_section_size (
sym_bfd, symbuf_sections->section
);
+ symbuf_left = bfd_section_size (
(*symbuf_sections)[sect_idx]
);
symbol_table_offset = filepos - symbuf_read;
symbol_table_offset = filepos - symbuf_read;
-
symbuf_sections = symbuf_sections->next
;
+
++sect_idx
;
}
count = symbuf_left;
}
count = symbuf_left;
@@
-1302,9
+1292,7
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
{
pst = start_psymtab (objfile,
namestring, valu,
{
pst = start_psymtab (objfile,
namestring, valu,
- first_so_symnum * symbol_size,
- objfile->global_psymbols,
- objfile->static_psymbols);
+ first_so_symnum * symbol_size);
pst->dirname = dirname_nso;
dirname_nso = NULL;
}
pst->dirname = dirname_nso;
dirname_nso = NULL;
}
@@
-1452,9
+1440,8
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
if (!new_name.empty ())
{
sym_len = new_name.length ();
if (!new_name.empty ())
{
sym_len = new_name.length ();
- sym_name = (char *) obstack_copy0 (&objfile->objfile_obstack,
- new_name.c_str (),
- sym_len);
+ sym_name = obstack_strdup (&objfile->objfile_obstack,
+ new_name);
}
}
}
}
@@
-1477,20
+1464,20
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
if (gdbarch_static_transform_name_p (gdbarch))
gdbarch_static_transform_name (gdbarch, namestring);
if (gdbarch_static_transform_name_p (gdbarch))
gdbarch_static_transform_name (gdbarch, namestring);
- add_psymbol_to_list (
sym_name, sym_len, 1
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len), true
,
VAR_DOMAIN, LOC_STATIC,
data_sect_index,
VAR_DOMAIN, LOC_STATIC,
data_sect_index,
-
&objfile->static_psymbols
,
+
psymbol_placement::STATIC
,
nlist.n_value, psymtab_language, objfile);
continue;
case 'G':
/* The addresses in these entries are reported to be
wrong. See the code that reads 'G's for symtabs. */
nlist.n_value, psymtab_language, objfile);
continue;
case 'G':
/* The addresses in these entries are reported to be
wrong. See the code that reads 'G's for symtabs. */
- add_psymbol_to_list (
sym_name, sym_len, 1
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len), true
,
VAR_DOMAIN, LOC_STATIC,
data_sect_index,
VAR_DOMAIN, LOC_STATIC,
data_sect_index,
-
&objfile->global_psymbols
,
+
psymbol_placement::GLOBAL
,
nlist.n_value, psymtab_language, objfile);
continue;
nlist.n_value, psymtab_language, objfile);
continue;
@@
-1505,16
+1492,16
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|| (p == namestring + 1
&& namestring[0] != ' '))
{
|| (p == namestring + 1
&& namestring[0] != ' '))
{
- add_psymbol_to_list (
sym_name, sym_len, 1
,
- STRUCT_DOMAIN, LOC_TYPEDEF, -1,
-
&objfile->static_psymbols
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len)
,
+
true,
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
+
psymbol_placement::STATIC
,
0, psymtab_language, objfile);
if (p[2] == 't')
{
/* Also a typedef with the same name. */
0, psymtab_language, objfile);
if (p[2] == 't')
{
/* Also a typedef with the same name. */
- add_psymbol_to_list (
sym_name, sym_len, 1
,
- VAR_DOMAIN, LOC_TYPEDEF, -1,
-
&objfile->static_psymbols
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len)
,
+
true,
VAR_DOMAIN, LOC_TYPEDEF, -1,
+
psymbol_placement::STATIC
,
0, psymtab_language, objfile);
p += 1;
}
0, psymtab_language, objfile);
p += 1;
}
@@
-1524,9
+1511,9
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
case 't':
if (p != namestring) /* a name is there, not just :T... */
{
case 't':
if (p != namestring) /* a name is there, not just :T... */
{
- add_psymbol_to_list (
sym_name, sym_len, 1
,
- VAR_DOMAIN, LOC_TYPEDEF, -1,
-
&objfile->static_psymbols
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len)
,
+
true,
VAR_DOMAIN, LOC_TYPEDEF, -1,
+
psymbol_placement::STATIC
,
0, psymtab_language, objfile);
}
check_enum:
0, psymtab_language, objfile);
}
check_enum:
@@
-1585,9
+1572,9
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
;
/* Note that the value doesn't matter for
enum constants in psymtabs, just in symtabs. */
;
/* Note that the value doesn't matter for
enum constants in psymtabs, just in symtabs. */
- add_psymbol_to_list (
p, q - p, 1
,
+ add_psymbol_to_list (
gdb::string_view (p, q - p), true
,
VAR_DOMAIN, LOC_CONST, -1,
VAR_DOMAIN, LOC_CONST, -1,
-
&objfile->static_psymbols
, 0,
+
psymbol_placement::STATIC
, 0,
psymtab_language, objfile);
/* Point past the name. */
p = q;
psymtab_language, objfile);
/* Point past the name. */
p = q;
@@
-1603,9
+1590,9
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
case 'c':
/* Constant, e.g. from "const" in Pascal. */
case 'c':
/* Constant, e.g. from "const" in Pascal. */
- add_psymbol_to_list (
sym_name, sym_len, 1
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len), true
,
VAR_DOMAIN, LOC_CONST, -1,
VAR_DOMAIN, LOC_CONST, -1,
-
&objfile->static_psymbols
, 0,
+
psymbol_placement::STATIC
, 0,
psymtab_language, objfile);
continue;
psymtab_language, objfile);
continue;
@@
-1658,10
+1645,10
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
pst->set_text_low (nlist.n_value);
textlow_not_set = 0;
}
pst->set_text_low (nlist.n_value);
textlow_not_set = 0;
}
- add_psymbol_to_list (
sym_name, sym_len, 1
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len), true
,
VAR_DOMAIN, LOC_BLOCK,
SECT_OFF_TEXT (objfile),
VAR_DOMAIN, LOC_BLOCK,
SECT_OFF_TEXT (objfile),
-
&objfile->static_psymbols
,
+
psymbol_placement::STATIC
,
nlist.n_value, psymtab_language, objfile);
continue;
nlist.n_value, psymtab_language, objfile);
continue;
@@
-1717,10
+1704,10
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
pst->set_text_low (nlist.n_value);
textlow_not_set = 0;
}
pst->set_text_low (nlist.n_value);
textlow_not_set = 0;
}
- add_psymbol_to_list (
sym_name, sym_len, 1
,
+ add_psymbol_to_list (
gdb::string_view (sym_name, sym_len), true
,
VAR_DOMAIN, LOC_BLOCK,
SECT_OFF_TEXT (objfile),
VAR_DOMAIN, LOC_BLOCK,
SECT_OFF_TEXT (objfile),
-
&objfile->global_psymbols
,
+
psymbol_placement::GLOBAL
,
nlist.n_value, psymtab_language, objfile);
continue;
nlist.n_value, psymtab_language, objfile);
continue;
@@
-1916,12
+1903,10
@@
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
static struct partial_symtab *
start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
static struct partial_symtab *
start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
- int ldsymoff, std::vector<partial_symbol *> &global_psymbols,
- std::vector<partial_symbol *> &static_psymbols)
+ int ldsymoff)
{
struct partial_symtab *result =
{
struct partial_symtab *result =
- start_psymtab_common (objfile, filename, textlow,
- global_psymbols, static_psymbols);
+ start_psymtab_common (objfile, filename, textlow);
result->read_symtab_private =
XOBNEW (&objfile->objfile_obstack, struct symloc);
result->read_symtab_private =
XOBNEW (&objfile->objfile_obstack, struct symloc);
@@
-2014,18
+1999,14
@@
dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
pst->set_text_low (pst->raw_text_high ());
else
{
pst->set_text_low (pst->raw_text_high ());
else
{
- struct partial_symtab *p1;
-
/* If we know our own starting text address, then walk through all other
psymtabs for this objfile, and if any didn't know their ending text
address, set it to our starting address. Take care to not set our
own ending address to our starting address. */
/* If we know our own starting text address, then walk through all other
psymtabs for this objfile, and if any didn't know their ending text
address, set it to our starting address. Take care to not set our
own ending address to our starting address. */
- ALL_OBJFILE_PSYMTABS (objfile, p1)
- {
+ for (partial_symtab *p1 : objfile->psymtabs ())
if (!p1->text_high_valid && p1->text_low_valid && p1 != pst)
p1->set_text_high (pst->raw_text_low ());
if (!p1->text_high_valid && p1->text_low_valid && p1 != pst)
p1->set_text_high (pst->raw_text_low ());
- }
}
/* End of kludge for patching Solaris textlow and texthigh. */
}
/* End of kludge for patching Solaris textlow and texthigh. */
@@
-2035,9
+2016,8
@@
dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
pst->number_of_dependencies = number_dependencies;
if (number_dependencies)
{
pst->number_of_dependencies = number_dependencies;
if (number_dependencies)
{
- pst->dependencies = XOBNEWVEC (&objfile->objfile_obstack,
- struct partial_symtab *,
- number_dependencies);
+ pst->dependencies
+ = objfile->partial_symtabs->allocate_dependencies (number_dependencies);
memcpy (pst->dependencies, dependency_list,
number_dependencies * sizeof (struct partial_symtab *));
}
memcpy (pst->dependencies, dependency_list,
number_dependencies * sizeof (struct partial_symtab *));
}
@@
-2057,17
+2037,10
@@
dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
/* We could save slight bits of space by only making one of these,
shared by the entire set of include files. FIXME-someday. */
subpst->dependencies =
/* We could save slight bits of space by only making one of these,
shared by the entire set of include files. FIXME-someday. */
subpst->dependencies =
-
XOBNEW (&objfile->objfile_obstack, struct partial_symtab *
);
+
objfile->partial_symtabs->allocate_dependencies (1
);
subpst->dependencies[0] = pst;
subpst->number_of_dependencies = 1;
subpst->dependencies[0] = pst;
subpst->number_of_dependencies = 1;
- subpst->globals_offset =
- subpst->n_global_syms =
- subpst->statics_offset =
- subpst->n_static_syms = 0;
-
- subpst->readin = 0;
- subpst->compunit_symtab = 0;
subpst->read_symtab = pst->read_symtab;
}
subpst->read_symtab = pst->read_symtab;
}
@@
-2325,7
+2298,7
@@
read_ofile_symtab (struct objfile *objfile, struct partial_symtab *pst)
else if (type & N_EXT || type == (unsigned char) N_TEXT
|| type == (unsigned char) N_NBTEXT)
{
else if (type & N_EXT || type == (unsigned char) N_TEXT
|| type == (unsigned char) N_NBTEXT)
{
- /* Global symbol: see if we came across a dbx defintion for
+ /* Global symbol: see if we came across a dbx defin
i
tion for
a corresponding symbol. If so, store the value. Remove
syms from the chain when their values are stored, but
search the whole chain, as there may be several syms from
a corresponding symbol. If so, store the value. Remove
syms from the chain when their values are stored, but
search the whole chain, as there may be several syms from
@@
-2368,7
+2341,7
@@
cp_set_block_scope (const struct symbol *symbol,
struct block *block,
struct obstack *obstack)
{
struct block *block,
struct obstack *obstack)
{
- if (
SYMBOL_DEMANGLED_NAME (symbol
) != NULL)
+ if (
symbol->demangled_name (
) != NULL)
{
/* Try to figure out the appropriate namespace from the
demangled name. */
{
/* Try to figure out the appropriate namespace from the
demangled name. */
@@
-2378,11
+2351,10
@@
cp_set_block_scope (const struct symbol *symbol,
name of the class as well. This should be harmless, but
is a little unfortunate. */
name of the class as well. This should be harmless, but
is a little unfortunate. */
- const char *name =
SYMBOL_DEMANGLED_NAME (symbol
);
+ const char *name =
symbol->demangled_name (
);
unsigned int prefix_len = cp_entire_prefix_len (name);
unsigned int prefix_len = cp_entire_prefix_len (name);
- block_set_scope (block,
- (const char *) obstack_copy0 (obstack, name, prefix_len),
+ block_set_scope (block, obstack_strndup (obstack, name, prefix_len),
obstack);
}
}
obstack);
}
}
@@
-2484,7
+2456,7
@@
process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
cstk.start_addr, cstk.start_addr + valu);
/* For C++, set the block's scope. */
cstk.start_addr, cstk.start_addr + valu);
/* For C++, set the block's scope. */
- if (
SYMBOL_LANGUAGE (cstk.name
) == language_cplus)
+ if (
cstk.name->language (
) == language_cplus)
cp_set_block_scope (cstk.name, block, &objfile->objfile_obstack);
/* May be switching to an assembler file which may not be using
cp_set_block_scope (cstk.name, block, &objfile->objfile_obstack);
/* May be switching to an assembler file which may not be using
@@
-2656,7
+2628,7
@@
process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
function-relative symbols. */
valu += function_start_offset;
function-relative symbols. */
valu += function_start_offset;
- /* GCC 2.95.3 emits the first N_SLINE stab som
we
here in the
+ /* GCC 2.95.3 emits the first N_SLINE stab som
ew
here in the
middle of the prologue instead of right at the start of the
function. To deal with this we record the address for the
first N_SLINE stab to be the start of the function instead of
middle of the prologue instead of right at the start of the
function. To deal with this we record the address for the
first N_SLINE stab to be the start of the function instead of
@@
-2851,7
+2823,7
@@
process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
cstk.start_addr, valu);
/* For C++, set the block's scope. */
cstk.start_addr, valu);
/* For C++, set the block's scope. */
- if (
SYMBOL_LANGUAGE (cstk.name
) == language_cplus)
+ if (
cstk.name->language (
) == language_cplus)
cp_set_block_scope (cstk.name, block,
&objfile->objfile_obstack);
}
cp_set_block_scope (cstk.name, block,
&objfile->objfile_obstack);
}
@@
-2962,14
+2934,17
@@
process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
void
coffstab_build_psymtabs (struct objfile *objfile,
CORE_ADDR textaddr, unsigned int textsize,
void
coffstab_build_psymtabs (struct objfile *objfile,
CORE_ADDR textaddr, unsigned int textsize,
-
struct stab_section_list *
stabsects,
+
const std::vector<asection *> &
stabsects,
file_ptr stabstroffset, unsigned int stabstrsize)
{
int val;
bfd *sym_bfd = objfile->obfd;
file_ptr stabstroffset, unsigned int stabstrsize)
{
int val;
bfd *sym_bfd = objfile->obfd;
- char *name = bfd_get_filename (sym_bfd);
+ c
onst c
har *name = bfd_get_filename (sym_bfd);
unsigned int stabsize;
unsigned int stabsize;
+ /* Allocate struct to keep track of stab reading. */
+ dbx_objfile_data_key.emplace (objfile);
+
DBX_TEXT_ADDR (objfile) = textaddr;
DBX_TEXT_SIZE (objfile) = textsize;
DBX_TEXT_ADDR (objfile) = textaddr;
DBX_TEXT_SIZE (objfile) = textsize;
@@
-3001,27
+2976,28
@@
coffstab_build_psymtabs (struct objfile *objfile,
/* In a coff file, we've already installed the minimal symbols that came
from the coff (non-stab) symbol table, so always act like an
incremental load here. */
/* In a coff file, we've already installed the minimal symbols that came
from the coff (non-stab) symbol table, so always act like an
incremental load here. */
- if (stabsects->next == NULL)
+ scoped_restore save_symbuf_sections
+ = make_scoped_restore (&symbuf_sections);
+ if (stabsects.size () == 1)
{
{
- stabsize = bfd_section_size (s
ym_bfd, stabsects->section
);
+ stabsize = bfd_section_size (s
tabsects[0]
);
DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile);
DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile);
- DBX_SYMTAB_OFFSET (objfile) = stabsects
->section
->filepos;
+ DBX_SYMTAB_OFFSET (objfile) = stabsects
[0]
->filepos;
}
else
{
}
else
{
- struct stab_section_list *stabsect;
-
DBX_SYMCOUNT (objfile) = 0;
DBX_SYMCOUNT (objfile) = 0;
- for (
stabsect = stabsects; stabsect != NULL; stabsect = stabsect->next
)
+ for (
asection *section : stabsects
)
{
{
- stabsize = bfd_section_size (s
ym_bfd, stabsect->s
ection);
+ stabsize = bfd_section_size (section);
DBX_SYMCOUNT (objfile) += stabsize / DBX_SYMBOL_SIZE (objfile);
}
DBX_SYMCOUNT (objfile) += stabsize / DBX_SYMBOL_SIZE (objfile);
}
- DBX_SYMTAB_OFFSET (objfile) = stabsects
->section
->filepos;
+ DBX_SYMTAB_OFFSET (objfile) = stabsects
[0]
->filepos;
- symbuf_sections = stabsects->next;
- symbuf_left = bfd_section_size (sym_bfd, stabsects->section);
+ sect_idx = 1;
+ symbuf_sections = &stabsects;
+ symbuf_left = bfd_section_size (stabsects[0]);
symbuf_read = 0;
}
symbuf_read = 0;
}
@@
-3050,7
+3026,12
@@
elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
{
int val;
bfd *sym_bfd = objfile->obfd;
{
int val;
bfd *sym_bfd = objfile->obfd;
- char *name = bfd_get_filename (sym_bfd);
+ const char *name = bfd_get_filename (sym_bfd);
+
+ stabsread_new_init ();
+
+ /* Allocate struct to keep track of stab reading. */
+ dbx_objfile_data_key.emplace (objfile);
/* Find the first and last text address. dbx_symfile_read seems to
want this. */
/* Find the first and last text address. dbx_symfile_read seems to
want this. */
@@
-3059,7
+3040,7
@@
elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
#define ELF_STABS_SYMBOL_SIZE 12 /* XXX FIXME XXX */
DBX_SYMBOL_SIZE (objfile) = ELF_STABS_SYMBOL_SIZE;
DBX_SYMCOUNT (objfile)
#define ELF_STABS_SYMBOL_SIZE 12 /* XXX FIXME XXX */
DBX_SYMBOL_SIZE (objfile) = ELF_STABS_SYMBOL_SIZE;
DBX_SYMCOUNT (objfile)
- = bfd_section_size (
objfile->obfd,
stabsect) / DBX_SYMBOL_SIZE (objfile);
+ = bfd_section_size (stabsect) / DBX_SYMBOL_SIZE (objfile);
DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos;
DBX_STAB_SECTION (objfile) = stabsect;
DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos;
DBX_STAB_SECTION (objfile) = stabsect;
@@
-3086,7
+3067,7
@@
elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
processing_acc_compilation = 1;
symbuf_read = 0;
processing_acc_compilation = 1;
symbuf_read = 0;
- symbuf_left = bfd_section_size (
objfile->obfd,
stabsect);
+ symbuf_left = bfd_section_size (stabsect);
scoped_restore restore_stabs_data = make_scoped_restore (&stabs_data);
gdb::unique_xmalloc_ptr<gdb_byte> data_holder;
scoped_restore restore_stabs_data = make_scoped_restore (&stabs_data);
gdb::unique_xmalloc_ptr<gdb_byte> data_holder;
@@
-3126,11
+3107,10
@@
stabsect_build_psymtabs (struct objfile *objfile, char *stab_name,
{
int val;
bfd *sym_bfd = objfile->obfd;
{
int val;
bfd *sym_bfd = objfile->obfd;
- char *name = bfd_get_filename (sym_bfd);
+ c
onst c
har *name = bfd_get_filename (sym_bfd);
asection *stabsect;
asection *stabstrsect;
asection *text_sect;
asection *stabsect;
asection *stabstrsect;
asection *text_sect;
- struct dbx_symfile_info *dbx;
stabsect = bfd_get_section_by_name (sym_bfd, stab_name);
stabstrsect = bfd_get_section_by_name (sym_bfd, stabstr_name);
stabsect = bfd_get_section_by_name (sym_bfd, stab_name);
stabstrsect = bfd_get_section_by_name (sym_bfd, stabstr_name);
@@
-3143,19
+3123,18
@@
stabsect_build_psymtabs (struct objfile *objfile, char *stab_name,
"but not string section (%s)"),
stab_name, stabstr_name);
"but not string section (%s)"),
stab_name, stabstr_name);
- dbx = XCNEW (struct dbx_symfile_info);
- set_objfile_data (objfile, dbx_objfile_data_key, dbx);
+ dbx_objfile_data_key.emplace (objfile);
text_sect = bfd_get_section_by_name (sym_bfd, text_name);
if (!text_sect)
error (_("Can't find %s section in symbol file"), text_name);
text_sect = bfd_get_section_by_name (sym_bfd, text_name);
if (!text_sect)
error (_("Can't find %s section in symbol file"), text_name);
- DBX_TEXT_ADDR (objfile) = bfd_section_vma (
sym_bfd,
text_sect);
- DBX_TEXT_SIZE (objfile) = bfd_section_size (
sym_bfd,
text_sect);
+ DBX_TEXT_ADDR (objfile) = bfd_section_vma (text_sect);
+ DBX_TEXT_SIZE (objfile) = bfd_section_size (text_sect);
DBX_SYMBOL_SIZE (objfile) = sizeof (struct external_nlist);
DBX_SYMBOL_SIZE (objfile) = sizeof (struct external_nlist);
- DBX_SYMCOUNT (objfile) = bfd_section_size (s
ym_bfd, s
tabsect)
+ DBX_SYMCOUNT (objfile) = bfd_section_size (stabsect)
/ DBX_SYMBOL_SIZE (objfile);
/ DBX_SYMBOL_SIZE (objfile);
- DBX_STRINGTAB_SIZE (objfile) = bfd_section_size (s
ym_bfd, s
tabstrsect);
+ DBX_STRINGTAB_SIZE (objfile) = bfd_section_size (stabstrsect);
DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos; /* XXX - FIXME: POKING
INSIDE BFD DATA
STRUCTURES */
DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos; /* XXX - FIXME: POKING
INSIDE BFD DATA
STRUCTURES */
@@
-3209,7
+3188,4
@@
void
_initialize_dbxread (void)
{
add_symtab_fns (bfd_target_aout_flavour, &aout_sym_fns);
_initialize_dbxread (void)
{
add_symtab_fns (bfd_target_aout_flavour, &aout_sym_fns);
-
- dbx_objfile_data_key
- = register_objfile_data_with_cleanup (NULL, dbx_free_symfile_info);
}
}
This page took
0.046388 seconds
and
4
git commands to generate.