gdb/symtab: Make cooked_index_entry::parent_entry private
Make cooked_index_entry::parent_entry private, and add member functions to access it. Tested on x86_64-linux and ppc64le-linux. Tested-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com> Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
parent
920bcec068
commit
850fce8baf
@ -203,7 +203,7 @@ cooked_index_entry::full_name (struct obstack *storage, bool for_main) const
|
||||
{
|
||||
const char *local_name = for_main ? name : canonical;
|
||||
|
||||
if ((flags & IS_LINKAGE) != 0 || parent_entry == nullptr)
|
||||
if ((flags & IS_LINKAGE) != 0 || get_parent () == nullptr)
|
||||
return local_name;
|
||||
|
||||
const char *sep = nullptr;
|
||||
@ -224,7 +224,7 @@ cooked_index_entry::full_name (struct obstack *storage, bool for_main) const
|
||||
return local_name;
|
||||
}
|
||||
|
||||
parent_entry->write_scope (storage, sep, for_main);
|
||||
get_parent ()->write_scope (storage, sep, for_main);
|
||||
obstack_grow0 (storage, local_name, strlen (local_name));
|
||||
return (const char *) obstack_finish (storage);
|
||||
}
|
||||
@ -236,8 +236,8 @@ cooked_index_entry::write_scope (struct obstack *storage,
|
||||
const char *sep,
|
||||
bool for_main) const
|
||||
{
|
||||
if (parent_entry != nullptr)
|
||||
parent_entry->write_scope (storage, sep, for_main);
|
||||
if (get_parent () != nullptr)
|
||||
get_parent ()->write_scope (storage, sep, for_main);
|
||||
const char *local_name = for_main ? name : canonical;
|
||||
obstack_grow (storage, local_name, strlen (local_name));
|
||||
obstack_grow (storage, sep, strlen (sep));
|
||||
@ -310,7 +310,7 @@ cooked_index_shard::handle_gnat_encoded_entry (cooked_index_entry *entry,
|
||||
parent = last;
|
||||
}
|
||||
|
||||
entry->parent_entry = parent;
|
||||
entry->set_parent (parent);
|
||||
return make_unique_xstrndup (tail.data (), tail.length ());
|
||||
}
|
||||
|
||||
@ -638,9 +638,9 @@ cooked_index::dump (gdbarch *arch)
|
||||
gdb_printf (" flags: %s\n", to_string (entry->flags).c_str ());
|
||||
gdb_printf (" DIE offset: %s\n", sect_offset_str (entry->die_offset));
|
||||
|
||||
if (entry->parent_entry != nullptr)
|
||||
if (entry->get_parent () != nullptr)
|
||||
gdb_printf (" parent: ((cooked_index_entry *) %p) [%s]\n",
|
||||
entry->parent_entry, entry->parent_entry->name);
|
||||
entry->get_parent (), entry->get_parent ()->name);
|
||||
else
|
||||
gdb_printf (" parent: ((cooked_index_entry *) 0)\n");
|
||||
|
||||
|
@ -94,8 +94,8 @@ struct cooked_index_entry : public allocate_on_obstack
|
||||
tag (tag_),
|
||||
flags (flags_),
|
||||
die_offset (die_offset_),
|
||||
parent_entry (parent_entry_),
|
||||
per_cu (per_cu_)
|
||||
per_cu (per_cu_),
|
||||
m_parent_entry (parent_entry_)
|
||||
{
|
||||
}
|
||||
|
||||
@ -220,6 +220,18 @@ struct cooked_index_entry : public allocate_on_obstack
|
||||
return compare (canonical, other.canonical, SORT) < 0;
|
||||
}
|
||||
|
||||
/* Set parent entry to PARENT. */
|
||||
void set_parent (const cooked_index_entry *parent)
|
||||
{
|
||||
m_parent_entry = parent;
|
||||
}
|
||||
|
||||
/* Return parent entry. */
|
||||
const cooked_index_entry *get_parent () const
|
||||
{
|
||||
return m_parent_entry;
|
||||
}
|
||||
|
||||
/* The name as it appears in DWARF. This always points into one of
|
||||
the mapped DWARF sections. Note that this may be the name or the
|
||||
linkage name -- two entries are created for DIEs which have both
|
||||
@ -234,10 +246,6 @@ struct cooked_index_entry : public allocate_on_obstack
|
||||
cooked_index_flag flags;
|
||||
/* The offset of this DIE. */
|
||||
sect_offset die_offset;
|
||||
/* The parent entry. This is NULL for top-level entries.
|
||||
Otherwise, it points to the parent entry, such as a namespace or
|
||||
class. */
|
||||
const cooked_index_entry *parent_entry;
|
||||
/* The CU from which this entry originates. */
|
||||
dwarf2_per_cu_data *per_cu;
|
||||
|
||||
@ -248,6 +256,11 @@ private:
|
||||
a parent, its write_scope method is called first. */
|
||||
void write_scope (struct obstack *storage, const char *sep,
|
||||
bool for_name) const;
|
||||
|
||||
/* The parent entry. This is NULL for top-level entries.
|
||||
Otherwise, it points to the parent entry, such as a namespace or
|
||||
class. */
|
||||
const cooked_index_entry *m_parent_entry;
|
||||
};
|
||||
|
||||
class cooked_index;
|
||||
|
@ -16523,7 +16523,7 @@ cooked_indexer::index_dies (cutu_reader *reader,
|
||||
/* The scope of a DW_TAG_entry_point cooked_index_entry is the one of
|
||||
its surrounding subroutine. */
|
||||
if (abbrev->tag == DW_TAG_entry_point)
|
||||
this_parent_entry = parent_entry->parent_entry;
|
||||
this_parent_entry = parent_entry->get_parent ();
|
||||
info_ptr = scan_attributes (reader->cu->per_cu, reader, info_ptr,
|
||||
info_ptr, abbrev, &name, &linkage_name,
|
||||
&flags, &sibling, &this_parent_entry,
|
||||
@ -16862,7 +16862,7 @@ cooked_index_functions::expand_symtabs_matching
|
||||
matches. */
|
||||
bool found = true;
|
||||
|
||||
const cooked_index_entry *parent = entry->parent_entry;
|
||||
const cooked_index_entry *parent = entry->get_parent ();
|
||||
for (int i = name_vec.size () - 1; i > 0; --i)
|
||||
{
|
||||
/* If we ran out of entries, or if this segment doesn't
|
||||
@ -16875,7 +16875,7 @@ cooked_index_functions::expand_symtabs_matching
|
||||
break;
|
||||
}
|
||||
|
||||
parent = parent->parent_entry;
|
||||
parent = parent->get_parent ();
|
||||
}
|
||||
|
||||
if (!found)
|
||||
|
Loading…
x
Reference in New Issue
Block a user