Parameterize cp_scan_for_anonymous_namespaces
This changes cp_scan_for_anonymous_namespaces to use the buildsym_compunit API, rather than the function-based API. gdb/ChangeLog 2018-07-20 Tom Tromey <tom@tromey.com> * stabsread.c (define_symbol): Update. * buildsym-legacy.h (get_buildsym_compunit): Declare. * dwarf2read.c (new_symbol): Update. * cp-support.h (cp_scan_for_anonymous_namespaces): Update. * cp-namespace.c: Include buildsym.h. (cp_scan_for_anonymous_namespaces): Add "compunit" parameter. * buildsym-legacy.c (get_buildsym_compunit): New function.
This commit is contained in:
parent
0baae8dbd3
commit
80e649fcac
|
@ -1,3 +1,13 @@
|
|||
2018-07-20 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* stabsread.c (define_symbol): Update.
|
||||
* buildsym-legacy.h (get_buildsym_compunit): Declare.
|
||||
* dwarf2read.c (new_symbol): Update.
|
||||
* cp-support.h (cp_scan_for_anonymous_namespaces): Update.
|
||||
* cp-namespace.c: Include buildsym.h.
|
||||
(cp_scan_for_anonymous_namespaces): Add "compunit" parameter.
|
||||
* buildsym-legacy.c (get_buildsym_compunit): New function.
|
||||
|
||||
2018-07-20 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* xcoffread.c: Include buildsym-legacy.h.
|
||||
|
|
|
@ -375,3 +375,12 @@ scoped_free_pendings::~scoped_free_pendings ()
|
|||
{
|
||||
free_buildsym_compunit ();
|
||||
}
|
||||
|
||||
/* See buildsym-legacy.h. */
|
||||
|
||||
struct buildsym_compunit *
|
||||
get_buildsym_compunit ()
|
||||
{
|
||||
gdb_assert (buildsym_compunit != nullptr);
|
||||
return buildsym_compunit;
|
||||
}
|
||||
|
|
|
@ -207,4 +207,8 @@ extern struct pending **get_file_symbols ();
|
|||
|
||||
extern struct pending **get_global_symbols ();
|
||||
|
||||
/* Return the current buildsym_compunit. */
|
||||
|
||||
extern struct buildsym_compunit *get_buildsym_compunit ();
|
||||
|
||||
#endif /* defined (LEGACY_BUILDSYM_H) */
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include "dictionary.h"
|
||||
#include "command.h"
|
||||
#include "frame.h"
|
||||
#include "buildsym-legacy.h"
|
||||
#include "buildsym.h"
|
||||
#include "language.h"
|
||||
#include "namespace.h"
|
||||
#include <string>
|
||||
|
@ -50,7 +50,8 @@ static struct type *cp_lookup_transparent_type_loop (const char *name,
|
|||
anonymous namespace; if so, add an appropriate using directive. */
|
||||
|
||||
void
|
||||
cp_scan_for_anonymous_namespaces (const struct symbol *const symbol,
|
||||
cp_scan_for_anonymous_namespaces (struct buildsym_compunit *compunit,
|
||||
const struct symbol *const symbol,
|
||||
struct objfile *const objfile)
|
||||
{
|
||||
if (SYMBOL_DEMANGLED_NAME (symbol) != NULL)
|
||||
|
@ -94,9 +95,9 @@ cp_scan_for_anonymous_namespaces (const struct symbol *const symbol,
|
|||
namespace given by the previous component if there is
|
||||
one, or to the global namespace if there isn't. */
|
||||
std::vector<const char *> excludes;
|
||||
add_using_directive (get_local_using_directives (),
|
||||
dest, src, NULL, NULL, excludes, 1,
|
||||
&objfile->objfile_obstack);
|
||||
add_using_directive (compunit->get_local_using_directives (),
|
||||
dest, src, NULL, NULL, excludes,
|
||||
1, &objfile->objfile_obstack);
|
||||
}
|
||||
/* The "+ 2" is for the "::". */
|
||||
previous_component = next_component + 2;
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
|
||||
struct symbol;
|
||||
struct block;
|
||||
struct buildsym_compunit;
|
||||
struct objfile;
|
||||
struct type;
|
||||
struct demangle_component;
|
||||
|
@ -132,7 +133,8 @@ extern symbol_name_matcher_ftype *cp_get_symbol_name_matcher
|
|||
|
||||
extern int cp_is_in_anonymous (const char *symbol_name);
|
||||
|
||||
extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol,
|
||||
extern void cp_scan_for_anonymous_namespaces (struct buildsym_compunit *,
|
||||
const struct symbol *symbol,
|
||||
struct objfile *objfile);
|
||||
|
||||
extern struct block_symbol cp_lookup_symbol_nonlocal
|
||||
|
|
|
@ -21476,7 +21476,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
|
|||
namespaces based on the demangled name. */
|
||||
if (!cu->processing_has_namespace_info
|
||||
&& cu->language == language_cplus)
|
||||
cp_scan_for_anonymous_namespaces (sym, objfile);
|
||||
cp_scan_for_anonymous_namespaces (get_buildsym_compunit (), sym,
|
||||
objfile);
|
||||
}
|
||||
return (sym);
|
||||
}
|
||||
|
|
|
@ -753,7 +753,8 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
|
|||
SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
|
||||
|
||||
if (SYMBOL_LANGUAGE (sym) == language_cplus)
|
||||
cp_scan_for_anonymous_namespaces (sym, objfile);
|
||||
cp_scan_for_anonymous_namespaces (get_buildsym_compunit (), sym,
|
||||
objfile);
|
||||
|
||||
}
|
||||
p++;
|
||||
|
|
Loading…
Reference in New Issue