2009-07-02 Roland McGrath <roland@redhat.com>
+ * c++/dwarf: Get rid of VS::unit_reference.
+ * c++/dwarf-knowledge.cc: Likewise.
+ * c++/dwarf_comparator: Likewise.
+ * c++/dwarf_data: Likewise.
+ * libdw/c++/values.cc: Likewise.
+ * c++/data-values.hh: Likewise.
+
* c++/dwarf_output: Rewrite.
* c++/subr.hh: New helpers for dwarf_output/dwarf_data.
return dwarf::VS_dwarf_constant;
if (typeid (*_m_value) == typeid (typename v::value_reference))
return dwarf::VS_reference;
- if (typeid (*_m_value) == typeid (typename v::value_unit_reference))
- return dwarf::VS_unit_reference;
if (typeid (*_m_value) == typeid (typename v::value_lineptr))
return dwarf::VS_lineptr;
if (typeid (*_m_value) == typeid (typename v::value_macptr))
VS_dwarf_constant, // Known DW_X_* space of integer constants.
VS_discr_list, // Block as used for DW_AT_discr_list.
VS_reference, // Pointer to another DIE.
- VS_unit_reference, // Pointer to another CU DIE.
VS_lineptr, // Pointer into .debug_line section.
VS_macptr, // Pointer into .debug_macinfo section.
VS_rangelistptr, // Pointer into .debug_ranges section.
return (debug_info_entry::raw_children_type::const_iterator
(thisattr ()));
}
- inline debug_info_entry::raw_children_type::const_iterator
- unit_reference () const
- {
- return reference ();
- }
// XXX reloc, dwfl
::Dwarf_Addr address () const;
switch (what)
{
case VS_reference:
- case VS_unit_reference:
// Stateless reference equality is just identity.
return (reference ()->identity ()
== other.reference ()->identity ());
return VS(discr_list);
case DW_AT_import:
- return tag == DW_TAG_imported_unit ? VS(unit_reference) : VS(reference);
+ return VS(reference);
case DW_AT_comp_dir:
return VS(source_file);
switch (what)
{
case dwarf::VS_reference:
- case dwarf::VS_unit_reference:
return reference_match (a.reference (), b.reference ());
case dwarf::VS_flag:
: ref () {}
};
- struct value_unit_reference : public value_dispatch
- {
- typename impl::compile_units::iterator ref;
-
- template<typename arg_type>
- inline value_unit_reference
- (const typename impl::compile_units::iterator &i,
- const arg_type &arg)
- : ref (i)
- {}
-
- template<typename iter, typename arg_type> // XXX dummy
- inline value_unit_reference (const iter &i, const arg_type &arg)
- : ref ()
- {}
- };
-
struct value_flag : public value_dispatch
{
bool flag;
_DWARF_DATA_AV_MAKE (source_file, source_file);
_DWARF_DATA_AV_MAKE (dwarf_constant, dwarf_constant);
_DWARF_DATA_AV_MAKE (reference, reference);
- _DWARF_DATA_AV_MAKE (unit_reference, unit_reference);
_DWARF_DATA_AV_MAKE (location, location);
//_DWARF_DATA_AV_MAKE (macptr, macros); XXX
{
return variant<typename vw::value_reference> ().ref;
}
- inline typename impl::compile_units::iterator
- unit_reference () const
- {
- return variant<typename vw::value_unit_reference> ().ref;
- }
inline location_attr &location () const
{
return string () == other.string ();
case dwarf::VS_reference:
return reference () == other.reference ();
- case dwarf::VS_unit_reference:
- return unit_reference () == other.unit_reference ();
case dwarf::VS_flag:
return flag () == other.flag ();
case dwarf::VS_rangelistptr:
case DW_FORM_ref4:
case DW_FORM_ref8:
case DW_FORM_ref_udata:
- possible = VS(unit_reference) | VS(reference);
+ possible = VS(reference);
break;
default:
if (unlikely ((expected & possible) == 0))
{
- if (expected == 0 && possible == (VS(unit_reference) | VS(reference)))
- // An unknown reference is a reference, not a unit_reference.
- return VS_reference;
-
// Otherwise we don't know enough to treat it robustly.
throw std::runtime_error ("XXX ambiguous form in unexpected attribute");
}
return addr_string (value.address ());
case dwarf::VS_reference:
- case dwarf::VS_unit_reference:
return hex_string (value.reference ()->offset (), "[", "]");
case dwarf::VS_source_file:
2009-07-02 Roland McGrath <roland@redhat.com>
+ * dwarflint-hl.cc (operator<<): dwarf::VS_unit_reference is gone.
+
* dwarfcmp.cc (main): Update -T constructors using tracker.
Instantiate and test dwarf_output for -T too.
case dwarf::VS_dwarf_constant: return o << "dwarf_constant";
case dwarf::VS_discr_list: return o << "discr_list";
case dwarf::VS_reference: return o << "reference";
- case dwarf::VS_unit_reference: return o << "unit_reference";
case dwarf::VS_lineptr: return o << "lineptr";
case dwarf::VS_macptr: return o << "macptr";
case dwarf::VS_rangelistptr: return o << "rangelistptr";