From: Roland McGrath Date: Thu, 2 Jul 2009 09:50:36 +0000 (-0700) Subject: Get rid of dwarf::VS::unit_reference. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=88dd3675996879b2cf6c49a2777028bdb7d14133;p=thirdparty%2Felfutils.git Get rid of dwarf::VS::unit_reference. --- diff --git a/libdw/ChangeLog b/libdw/ChangeLog index a269182eb..3c1b98d59 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,5 +1,12 @@ 2009-07-02 Roland McGrath + * 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. diff --git a/libdw/c++/data-values.hh b/libdw/c++/data-values.hh index 55860f5c5..a16bb5f67 100644 --- a/libdw/c++/data-values.hh +++ b/libdw/c++/data-values.hh @@ -64,8 +64,6 @@ namespace elfutils 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)) diff --git a/libdw/c++/dwarf b/libdw/c++/dwarf index 311591fe6..3958cd1f6 100644 --- a/libdw/c++/dwarf +++ b/libdw/c++/dwarf @@ -1011,7 +1011,6 @@ namespace elfutils 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. @@ -1119,11 +1118,6 @@ namespace elfutils 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; @@ -1176,7 +1170,6 @@ namespace elfutils switch (what) { case VS_reference: - case VS_unit_reference: // Stateless reference equality is just identity. return (reference ()->identity () == other.reference ()->identity ()); diff --git a/libdw/c++/dwarf-knowledge.cc b/libdw/c++/dwarf-knowledge.cc index 698d49acf..41463ab82 100644 --- a/libdw/c++/dwarf-knowledge.cc +++ b/libdw/c++/dwarf-knowledge.cc @@ -98,7 +98,7 @@ expected_value_space (int attr, int tag) 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); diff --git a/libdw/c++/dwarf_comparator b/libdw/c++/dwarf_comparator index 55a417170..4373f6309 100644 --- a/libdw/c++/dwarf_comparator +++ b/libdw/c++/dwarf_comparator @@ -391,7 +391,6 @@ namespace elfutils switch (what) { case dwarf::VS_reference: - case dwarf::VS_unit_reference: return reference_match (a.reference (), b.reference ()); case dwarf::VS_flag: diff --git a/libdw/c++/dwarf_data b/libdw/c++/dwarf_data index 6d039009e..d2355bb7b 100644 --- a/libdw/c++/dwarf_data +++ b/libdw/c++/dwarf_data @@ -730,23 +730,6 @@ namespace elfutils : ref () {} }; - struct value_unit_reference : public value_dispatch - { - typename impl::compile_units::iterator ref; - - template - inline value_unit_reference - (const typename impl::compile_units::iterator &i, - const arg_type &arg) - : ref (i) - {} - - template // XXX dummy - inline value_unit_reference (const iter &i, const arg_type &arg) - : ref () - {} - }; - struct value_flag : public value_dispatch { bool flag; @@ -905,7 +888,6 @@ namespace elfutils _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 @@ -1020,11 +1002,6 @@ namespace elfutils { return variant ().ref; } - inline typename impl::compile_units::iterator - unit_reference () const - { - return variant ().ref; - } inline location_attr &location () const { @@ -1169,8 +1146,6 @@ namespace elfutils 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: diff --git a/libdw/c++/values.cc b/libdw/c++/values.cc index 109db05a8..0ba451b27 100644 --- a/libdw/c++/values.cc +++ b/libdw/c++/values.cc @@ -122,7 +122,7 @@ dwarf::attr_value::what_space () const case DW_FORM_ref4: case DW_FORM_ref8: case DW_FORM_ref_udata: - possible = VS(unit_reference) | VS(reference); + possible = VS(reference); break; default: @@ -131,10 +131,6 @@ dwarf::attr_value::what_space () const 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"); } @@ -217,7 +213,6 @@ value_string (const value_type &value) 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: diff --git a/src/ChangeLog b/src/ChangeLog index e521df840..809495e43 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2009-07-02 Roland McGrath + * 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. diff --git a/src/dwarflint-hl.cc b/src/dwarflint-hl.cc index 5a8c43476..edd71d6d9 100644 --- a/src/dwarflint-hl.cc +++ b/src/dwarflint-hl.cc @@ -146,7 +146,6 @@ operator << (std::ostream &o, elfutils::dwarf::value_space vs) 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";