Change add_psymbol_to_list to use an enum
This changes add_psymbol_to_list to use an enum, rather than a pointer to a vector, to decide where to put the new symbol. This reduces the number of direct references to the static_psymbols and global_psymbols members of the objfile, which is handy in a later patch. gdb/ChangeLog 2019-01-10 Tom Tromey <tom@tromey.com> * xcoffread.c (scan_xcoff_symtab): Update. * psymtab.c (add_psymbol_to_list): Replace "list" parameter with "where". * mdebugread.c (parse_partial_symbols) (handle_psymbol_enumerators): Update. * dwarf2read.c (add_partial_symbol, load_partial_dies): Update. * dbxread.c (read_dbx_symtab): Update. * psympriv.h (psymbol_placement): New enum. (add_psymbol_to_list): Update.
This commit is contained in:
parent
939652a515
commit
75aedd27e6
@ -1,3 +1,15 @@
|
|||||||
|
2019-01-10 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* xcoffread.c (scan_xcoff_symtab): Update.
|
||||||
|
* psymtab.c (add_psymbol_to_list): Replace "list" parameter with
|
||||||
|
"where".
|
||||||
|
* mdebugread.c (parse_partial_symbols)
|
||||||
|
(handle_psymbol_enumerators): Update.
|
||||||
|
* dwarf2read.c (add_partial_symbol, load_partial_dies): Update.
|
||||||
|
* dbxread.c (read_dbx_symtab): Update.
|
||||||
|
* psympriv.h (psymbol_placement): New enum.
|
||||||
|
(add_psymbol_to_list): Update.
|
||||||
|
|
||||||
2019-01-10 Tom Tromey <tom@tromey.com>
|
2019-01-10 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
|
* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
|
||||||
|
@ -1476,7 +1476,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
data_sect_index,
|
data_sect_index,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
nlist.n_value, psymtab_language, objfile);
|
nlist.n_value, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1486,7 +1486,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
data_sect_index,
|
data_sect_index,
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
nlist.n_value, psymtab_language, objfile);
|
nlist.n_value, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1503,14 +1503,14 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
{
|
{
|
||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
if (p[2] == 't')
|
if (p[2] == 't')
|
||||||
{
|
{
|
||||||
/* Also a typedef with the same name. */
|
/* Also a typedef with the same name. */
|
||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
p += 1;
|
p += 1;
|
||||||
}
|
}
|
||||||
@ -1522,7 +1522,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
{
|
{
|
||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
}
|
}
|
||||||
check_enum:
|
check_enum:
|
||||||
@ -1583,7 +1583,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
enum constants in psymtabs, just in symtabs. */
|
enum constants in psymtabs, just in symtabs. */
|
||||||
add_psymbol_to_list (p, q - p, 1,
|
add_psymbol_to_list (p, q - p, 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols, 0,
|
psymbol_placement::STATIC, 0,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
/* Point past the name. */
|
/* Point past the name. */
|
||||||
p = q;
|
p = q;
|
||||||
@ -1601,7 +1601,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
/* Constant, e.g. from "const" in Pascal. */
|
/* Constant, e.g. from "const" in Pascal. */
|
||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols, 0,
|
psymbol_placement::STATIC, 0,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1657,7 +1657,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
nlist.n_value, psymtab_language, objfile);
|
nlist.n_value, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1716,7 +1716,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
|
|||||||
add_psymbol_to_list (sym_name, sym_len, 1,
|
add_psymbol_to_list (sym_name, sym_len, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
nlist.n_value, psymtab_language, objfile);
|
nlist.n_value, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -8888,7 +8888,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
addr,
|
addr,
|
||||||
cu->language, objfile);
|
cu->language, objfile);
|
||||||
}
|
}
|
||||||
@ -8898,7 +8898,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
addr, cu->language, objfile);
|
addr, cu->language, objfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8906,17 +8906,12 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
set_objfile_main_name (objfile, actual_name, cu->language);
|
set_objfile_main_name (objfile, actual_name, cu->language);
|
||||||
break;
|
break;
|
||||||
case DW_TAG_constant:
|
case DW_TAG_constant:
|
||||||
{
|
add_psymbol_to_list (actual_name, strlen (actual_name),
|
||||||
std::vector<partial_symbol *> *list;
|
built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
|
||||||
|
-1, (pdi->is_external
|
||||||
if (pdi->is_external)
|
? psymbol_placement::GLOBAL
|
||||||
list = &objfile->global_psymbols;
|
: psymbol_placement::STATIC),
|
||||||
else
|
0, cu->language, objfile);
|
||||||
list = &objfile->static_psymbols;
|
|
||||||
add_psymbol_to_list (actual_name, strlen (actual_name),
|
|
||||||
built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
|
|
||||||
-1, list, 0, cu->language, objfile);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case DW_TAG_variable:
|
case DW_TAG_variable:
|
||||||
if (pdi->d.locdesc)
|
if (pdi->d.locdesc)
|
||||||
@ -8951,7 +8946,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
addr, cu->language, objfile);
|
addr, cu->language, objfile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -8970,7 +8965,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
has_loc ? addr : 0,
|
has_loc ? addr : 0,
|
||||||
cu->language, objfile);
|
cu->language, objfile);
|
||||||
}
|
}
|
||||||
@ -8981,7 +8976,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
add_psymbol_to_list (actual_name, strlen (actual_name),
|
add_psymbol_to_list (actual_name, strlen (actual_name),
|
||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
break;
|
break;
|
||||||
case DW_TAG_imported_declaration:
|
case DW_TAG_imported_declaration:
|
||||||
@ -8989,14 +8984,14 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
add_psymbol_to_list (actual_name, strlen (actual_name),
|
add_psymbol_to_list (actual_name, strlen (actual_name),
|
||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
break;
|
break;
|
||||||
case DW_TAG_module:
|
case DW_TAG_module:
|
||||||
add_psymbol_to_list (actual_name, strlen (actual_name),
|
add_psymbol_to_list (actual_name, strlen (actual_name),
|
||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
MODULE_DOMAIN, LOC_TYPEDEF, -1,
|
MODULE_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
break;
|
break;
|
||||||
case DW_TAG_class_type:
|
case DW_TAG_class_type:
|
||||||
@ -9021,8 +9016,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
cu->language == language_cplus
|
cu->language == language_cplus
|
||||||
? &objfile->global_psymbols
|
? psymbol_placement::GLOBAL
|
||||||
: &objfile->static_psymbols,
|
: psymbol_placement::STATIC,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -9031,8 +9026,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
|||||||
built_actual_name != NULL,
|
built_actual_name != NULL,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
cu->language == language_cplus
|
cu->language == language_cplus
|
||||||
? &objfile->global_psymbols
|
? psymbol_placement::GLOBAL
|
||||||
: &objfile->static_psymbols,
|
: psymbol_placement::STATIC,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -18440,7 +18435,7 @@ load_partial_dies (const struct die_reader_specs *reader,
|
|||||||
if (building_psymtab && pdi.name != NULL)
|
if (building_psymtab && pdi.name != NULL)
|
||||||
add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
|
add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
|
info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
|
||||||
continue;
|
continue;
|
||||||
@ -18475,8 +18470,8 @@ load_partial_dies (const struct die_reader_specs *reader,
|
|||||||
add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
|
add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
cu->language == language_cplus
|
cu->language == language_cplus
|
||||||
? &objfile->global_psymbols
|
? psymbol_placement::GLOBAL
|
||||||
: &objfile->static_psymbols,
|
: psymbol_placement::STATIC,
|
||||||
0, cu->language, objfile);
|
0, cu->language, objfile);
|
||||||
|
|
||||||
info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
|
info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
|
||||||
|
@ -3048,7 +3048,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_DATA (objfile),
|
SECT_OFF_DATA (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
sh.value,
|
sh.value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -3059,7 +3059,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_DATA (objfile),
|
SECT_OFF_DATA (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
sh.value,
|
sh.value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -3078,7 +3078,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF,
|
STRUCT_DOMAIN, LOC_TYPEDEF,
|
||||||
-1,
|
-1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
if (p[2] == 't')
|
if (p[2] == 't')
|
||||||
{
|
{
|
||||||
@ -3087,7 +3087,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
p - namestring, 1,
|
p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF,
|
VAR_DOMAIN, LOC_TYPEDEF,
|
||||||
-1,
|
-1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language,
|
0, psymtab_language,
|
||||||
objfile);
|
objfile);
|
||||||
p += 1;
|
p += 1;
|
||||||
@ -3101,7 +3101,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF,
|
VAR_DOMAIN, LOC_TYPEDEF,
|
||||||
-1,
|
-1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
}
|
}
|
||||||
check_enum:
|
check_enum:
|
||||||
@ -3166,7 +3166,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (p, q - p, 1,
|
add_psymbol_to_list (p, q - p, 1,
|
||||||
VAR_DOMAIN, LOC_CONST,
|
VAR_DOMAIN, LOC_CONST,
|
||||||
-1,
|
-1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language,
|
0, psymtab_language,
|
||||||
objfile);
|
objfile);
|
||||||
/* Point past the name. */
|
/* Point past the name. */
|
||||||
@ -3184,7 +3184,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
/* Constant, e.g. from "const" in Pascal. */
|
/* Constant, e.g. from "const" in Pascal. */
|
||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -3198,7 +3198,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
sh.value,
|
sh.value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -3217,7 +3217,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
sh.value,
|
sh.value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -3455,13 +3455,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
section,
|
section,
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
sh.value, psymtab_language, objfile);
|
sh.value, psymtab_language, objfile);
|
||||||
else
|
else
|
||||||
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
section,
|
section,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
sh.value, psymtab_language, objfile);
|
sh.value, psymtab_language, objfile);
|
||||||
|
|
||||||
procaddr = sh.value;
|
procaddr = sh.value;
|
||||||
@ -3527,7 +3527,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
{
|
{
|
||||||
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
}
|
}
|
||||||
handle_psymbol_enumerators (objfile, fh, sh.st, sh.value);
|
handle_psymbol_enumerators (objfile, fh, sh.st, sh.value);
|
||||||
@ -3567,7 +3567,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
/* Use this gdb symbol. */
|
/* Use this gdb symbol. */
|
||||||
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
||||||
VAR_DOMAIN, theclass, section,
|
VAR_DOMAIN, theclass, section,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
sh.value, psymtab_language, objfile);
|
sh.value, psymtab_language, objfile);
|
||||||
skip:
|
skip:
|
||||||
cur_sdx++; /* Go to next file symbol. */
|
cur_sdx++; /* Go to next file symbol. */
|
||||||
@ -3647,7 +3647,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
add_psymbol_to_list (sym_name, strlen (sym_name), 1,
|
||||||
VAR_DOMAIN, theclass,
|
VAR_DOMAIN, theclass,
|
||||||
section,
|
section,
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
svalue, psymtab_language, objfile);
|
svalue, psymtab_language, objfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3808,7 +3808,7 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype,
|
|||||||
in psymtabs, just in symtabs. */
|
in psymtabs, just in symtabs. */
|
||||||
add_psymbol_to_list (name, strlen (name), 1,
|
add_psymbol_to_list (name, strlen (name), 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols, 0,
|
psymbol_placement::STATIC, 0,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
ext_sym += external_sym_size;
|
ext_sym += external_sym_size;
|
||||||
}
|
}
|
||||||
|
@ -271,13 +271,22 @@ struct partial_symtab
|
|||||||
void *read_symtab_private;
|
void *read_symtab_private;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Specify whether a partial psymbol should be allocated on the global
|
||||||
|
list or the static list. */
|
||||||
|
|
||||||
|
enum class psymbol_placement
|
||||||
|
{
|
||||||
|
STATIC,
|
||||||
|
GLOBAL
|
||||||
|
};
|
||||||
|
|
||||||
/* Add any kind of symbol to a partial_symbol vector. */
|
/* Add any kind of symbol to a partial_symbol vector. */
|
||||||
|
|
||||||
extern void add_psymbol_to_list (const char *, int,
|
extern void add_psymbol_to_list (const char *, int,
|
||||||
int, domain_enum,
|
int, domain_enum,
|
||||||
enum address_class,
|
enum address_class,
|
||||||
short /* section */,
|
short /* section */,
|
||||||
std::vector<partial_symbol *> *,
|
enum psymbol_placement,
|
||||||
CORE_ADDR,
|
CORE_ADDR,
|
||||||
enum language, struct objfile *);
|
enum language, struct objfile *);
|
||||||
|
|
||||||
|
@ -1638,7 +1638,7 @@ add_psymbol_to_list (const char *name, int namelength, int copy_name,
|
|||||||
domain_enum domain,
|
domain_enum domain,
|
||||||
enum address_class theclass,
|
enum address_class theclass,
|
||||||
short section,
|
short section,
|
||||||
std::vector<partial_symbol *> *list,
|
psymbol_placement where,
|
||||||
CORE_ADDR coreaddr,
|
CORE_ADDR coreaddr,
|
||||||
enum language language, struct objfile *objfile)
|
enum language language, struct objfile *objfile)
|
||||||
{
|
{
|
||||||
@ -1651,11 +1651,14 @@ add_psymbol_to_list (const char *name, int namelength, int copy_name,
|
|||||||
section, coreaddr, language, objfile, &added);
|
section, coreaddr, language, objfile, &added);
|
||||||
|
|
||||||
/* Do not duplicate global partial symbols. */
|
/* Do not duplicate global partial symbols. */
|
||||||
if (list == &objfile->global_psymbols
|
if (where == psymbol_placement::GLOBAL && !added)
|
||||||
&& !added)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Save pointer to partial symbol in psymtab, growing symtab if needed. */
|
/* Save pointer to partial symbol in psymtab, growing symtab if needed. */
|
||||||
|
std::vector<partial_symbol *> *list
|
||||||
|
= (where == psymbol_placement::STATIC
|
||||||
|
? &objfile->static_psymbols
|
||||||
|
: &objfile->global_psymbols);
|
||||||
append_psymbol_to_list (list, psym, objfile);
|
append_psymbol_to_list (list, psym, objfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2654,7 +2654,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_DATA (objfile),
|
SECT_OFF_DATA (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
symbol.n_value,
|
symbol.n_value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -2665,7 +2665,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_STATIC,
|
VAR_DOMAIN, LOC_STATIC,
|
||||||
SECT_OFF_DATA (objfile),
|
SECT_OFF_DATA (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
symbol.n_value,
|
symbol.n_value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -2683,14 +2683,14 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
{
|
{
|
||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
STRUCT_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
if (p[2] == 't')
|
if (p[2] == 't')
|
||||||
{
|
{
|
||||||
/* Also a typedef with the same name. */
|
/* Also a typedef with the same name. */
|
||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
p += 1;
|
p += 1;
|
||||||
}
|
}
|
||||||
@ -2702,7 +2702,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
{
|
{
|
||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
VAR_DOMAIN, LOC_TYPEDEF, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
}
|
}
|
||||||
check_enum:
|
check_enum:
|
||||||
@ -2764,7 +2764,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
enum constants in psymtabs, just in symtabs. */
|
enum constants in psymtabs, just in symtabs. */
|
||||||
add_psymbol_to_list (p, q - p, 1,
|
add_psymbol_to_list (p, q - p, 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
/* Point past the name. */
|
/* Point past the name. */
|
||||||
p = q;
|
p = q;
|
||||||
@ -2782,7 +2782,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
/* Constant, e.g. from "const" in Pascal. */
|
/* Constant, e.g. from "const" in Pascal. */
|
||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_CONST, -1,
|
VAR_DOMAIN, LOC_CONST, -1,
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
0, psymtab_language, objfile);
|
0, psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -2800,7 +2800,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->static_psymbols,
|
psymbol_placement::STATIC,
|
||||||
symbol.n_value,
|
symbol.n_value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
@ -2830,7 +2830,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
|
|||||||
add_psymbol_to_list (namestring, p - namestring, 1,
|
add_psymbol_to_list (namestring, p - namestring, 1,
|
||||||
VAR_DOMAIN, LOC_BLOCK,
|
VAR_DOMAIN, LOC_BLOCK,
|
||||||
SECT_OFF_TEXT (objfile),
|
SECT_OFF_TEXT (objfile),
|
||||||
&objfile->global_psymbols,
|
psymbol_placement::GLOBAL,
|
||||||
symbol.n_value,
|
symbol.n_value,
|
||||||
psymtab_language, objfile);
|
psymtab_language, objfile);
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user