+ 2009-11-21 Roland McGrath <roland@redhat.com>
+
+ * dwarf_getlocation.c (check_constant_offset): Return 1 for all
+ non-constant forms.
+
+2009-10-15 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_output: Major copier revamp.
+
+ * c++/dwarf_comparator (dwarf_comparator::reference_match):
+ Don't bail out before calling tracker's notice_match on mismatches.
+
+2009-10-02 Roland McGrath <roland@redhat.com>
+
+ * c++/subr.hh (subr::stackish): New template type.
+
+ * c++/dwarf_comparator: Fix overload magic to distinguish reference
+ comparisons from child comparisons.
+
+2009-10-01 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker (dwarf_path_finder::walk_down_to): Fix sibling
+ check for short-circuit optimization to handle end iterator case.
+
+ * c++/line_info.cc (dwarf::source_file::name): Check for failure
+ return from dwarf_formstring.
+ (dwarf::source_file::to_string): Likewise.
+
+2009-09-30 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker (dwarf_path_finder::walk::jump): New method.
+ (dwarf_ref_tracker::walk::jump): New method.
+
+ * c++/dwarf (dwarf::debug_info_entry): Make constructor from file and
+ offset public.
+ (dwarf::debug_info_entry::compile_unit): New method.
+
+ * c++/dwarf_comparator (dwarf_comparator::reference_match): Use the
+ subtracker/subcomparator for attributes too.
+
+ * c++/subr.hh (subr::sharing_stack::clear): New method.
+
+ * c++/values.cc (dwarf::attr_value::what_space):
+ Grok exprloc, flag_present, sec_offset.
+
+ * c++/values.cc (dwarf::attr_value::what_space): Fix data[48] case
+ to favor constants when expected.
+
+2009-09-25 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf (dwarf::location_attr::operator==): Compare a singleton as
+ a list so it matches a one-element full-range list.
+
+ * c++/values.cc (dwarf::range_list::const_iterator::const_iterator):
+ For begin case, actually get the offset from the attribute!
+ (dwarf::location_attr::begin): Likewise.
+ * c++/dwarf (dwarf::range_list, dwarf::location_attr): Fix iterator
+ initializers accordingly.
+
+2009-09-21 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf-knowledge.cc (expected_value_space): DW_AT_const_value can
+ take an address too.
+
+2009-09-08 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_output: Match duplicates going into the collector even
+ when they contain circular references.
+
+ * c++/dwarf_comparator (dwarf_comparator::equal_enough):
+ New class method, broken out of ...
+ * c++/dwarf_tracker (dwarf_ref_tracker::equal_enough::operator ()):
+ ... here. Call it.
+ (dwarf_path_finder, dwarf_ref_tracker): Don't assume iterators do ->.
+
+ * c++/subr.hh (subr::wrapped_input_container): New class.
+
+2009-09-01 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker (dwarf_path_finder): Use subr::sharing_stack.
+
+ * c++/subr.hh (subr::sharing_stack): New template class.
+ * c++/dwarf (dwarf::debug_info_entry::children_type::const_iterator):
+ Use it in place fo std::stack.
+
+2009-08-31 Roland McGrath <roland@redhat.com>
+
+ * c++/subr.hh (subr::dynamic_equality_set): New template class.
+ * c++/dwarf_output (dwarf_output_collector): Use it for _m_attr_sets.
+
+2009-08-27 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_output (dwarf_output::dwarf_output): Add a variant with a
+ user-supplied copier, reimplement the collector-only version.
+ (dwarf_output::copier): New constructors and destructor public.
+
+ * c++/dwarf_output (dwarf_output::copier::seen::promote_pending):
+ Notice circularity inside resolve_refs.
+
+2009-08-25 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker: Soup up circular reference handling to handle
+ mismatched duplication vs sharing in semantically matching trees.
+ * c++/dwarf_comparator: Update user.
+
+2009-08-21 Roland McGrath <roland@redhat.com>
+
+ * c++/subr.hh (hash<std::string>): Use elf_gnu_hash algorithm.
+
+ * c++/dwarf (dwarf::source_file::identity): New method.
+ * c++/dwarf_data (dwarf_data::source_file::identity): Likewise.
+ * c++/dwarf_output (dwarf_output::copier): Cache input string
+ and source file pointers to short-circuit repeated full hashconsing.
+
+2009-08-20 Roland McGrath <roland@redhat.com>
+
+ * c++/values.cc (value_string): Fix constant-block case.
+
+ * c++/dwarf_comparator: Use tracker::subtracker for subcomparator.
+ Let mismatch hooks return bool that is true to keep comparing.
+ * c++/dwarf_tracker: Define subtracker.
+
+2009-08-19 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker: Revamp derived tracker logic.
+ * c++/dwarf_comparator: Update user.
+
+ * c++/subr.hh (wrapped_input_iterator::base): New method.
+ (nothing): Kill operator (), really just nothing here.
+ (create_container): Replace post-set hook with setter hook.
+ (is): New callable template.
+ (nostream): New template, dummy for << debug hacks.
+
+ * c++/dwarf_output: Revamp construction for ref handling.
+ * c++/dwarf_data: Miscellaneous updates for dwarf_output changes.
+ * c++/dwarf_edit: Likewise.
+
+ * c++/dwarf (skipping_wrapper::const_iterator): Add hasher.
+ (debug_info_entry::raw_children_type::const_iterator): Likewise.
+ (debug_info_entry::attributes_type): Make ordered an inline
+ rather than a field.
+ (range_list, arange_list): Likewise.
+
+ * c++/data-values.hh (what_space): Use dynamic_cast rather than
+ typeid, so we accept derived classes.
+
+2009-08-16 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker (dwarf_ref_tracker): Add missing destructor.
+
+2009-07-08 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf-knowledge.cc (expected_value_space):
+ DW_AT_data_member_location can be constant or location.
+ * c++/values.cc (what_space): Treat only data[48] as *ptr when those
+ are expected. No other data forms can be *ptr.
+
+ * c++/output-shape.cc: New file.
+ * Makefile.am (libdwpp_a_SOURCES): Add it.
+ * c++/dwarf_output: Call add_shape method there.
+
+2009-07-06 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker (tracker): Break out private class into ...
+ (dwarf_path_finder): ... here.
+
+2009-07-03 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf: Give line info stubby to_string methods.
+ * c++/dwarf_data: Likewise.
+ * c++/edit-values.cc: Likewise.
+
+ * c++/dwarf: Fix location_attr iterators.
+ * c++/values.cc: Likewise.
+
+ * Makefile.am (AM_CXXFLAGS): New variable (from ../src/Makefile.am).
+
+ * c++/dwarf: Fix range_list canonicalizing comparisons.
+
+ * c++/dwarf_edit: Fix copy construction using a ref-maker.
+ * c++/dwarf_data: Updates.
+ * c++/subr.hh: Updates.
+ * c++/dwarf_ref_maker: New file.
+ * Makefile.am (pkginclude_HEADERS): Add it.
+
+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.
+
+ * c++/dwarf_edit: Much guts moved to ...
+ * c++/dwarf_data: ... here, new file.
+ * c++/known.cc: Update specializations.
+
+ * libdw/c++/edit-values.cc (what_space): Moved to ...
+ * c++/data-values.hh: ... here, new file.
+
+ * Makefile.am (noinst_HEADERS): Add it.
+
+ * c++/output-values.cc: New file.
+ * Makefile.am (libdwpp_a_SOURCES): Add it.
+ Makefile.am (pkginclude_HEADERS): Add dwarf_data, dwarf_output.
+
+ * c++/dwarf: Use to_string function overload, not to_string method.
+ * c++/values.cc: Define to_string specializations.
+
+2009-07-01 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_tracker: Major revamp for efficiency and to handle
+ circular reference chains.
+ * c++/dwarf_comparator: Tracker interface changes.
+
+2009-06-19 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf_comparator: New file.
+ * c++/dwarf_tracker: New file.
+ * Makefile.am (pkginclude_HEADERS): Add them.
+
+ * c++/dwarf_edit: Miscellaneous fixes.
+ Support dwarf_enum, to_string for attributes.
+ * c++/known.cc: Support dwarf_edit::dwarf_enum.
+ * c++/edit-values.cc: Support to_string for attributes.
+ * c++/values.cc: Rejiggered accordingly.
+
+ * c++/dwarf-knowledge.cc (expected_value_space): Expect unit_reference
+ only for DW_TAG_imported_unit.
+
+ * c++/dwarf: Miscellaneous fixes.
+
+2009-04-02 Roland McGrath <roland@redhat.com>
+
+ * Makefile.am (noinst_HEADERS): Add known-dwarf.h and
+ c++/dwarf-knowledge.cc here.
+
+2009-03-29 Roland McGrath <roland@redhat.com>
+
+ * c++/exception.cc: New file.
+ * Makefile.am (libdwpp_a_SOURCES): Add it.
+
+2009-03-25 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf, c++/values.cc: Proper dwarf_constant support.
+ * c++/dwarf_edit, c++/edit-values.cc: Likewise.
+ * c++/known.cc: New file.
+ * Makefile.am (libdwpp_a_SOURCES): Add it.
+
+2009-03-24 Petr Machata <pmachata@redhat.com>
+
+ * c++/dwarf (dwarf::debug_info_entry::raw_attributes):
+ Fix iteration over attributes.
+
+2009-03-24 Roland McGrath <roland@redhat.com>
+
+ * Makefile.am (libdwpp_a_SOURCES): New variable.
+ (lib_LIBRARIES): Add libdwpp.a to it.
+
+2009-02-26 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf (dwarf::attr_value): Add _m_tag private member.
+ (dwarf::attr_value, dwarf::attribute): Update initializers.
+ (dwarf::raw_attributes::const_iterator): Update caller.
+ * c++/values.cc (attr_value::what_space): Use it.
+
+2009-02-01 Roland McGrath <roland@redhat.com>
+
+ * c++/edit-values.cc: New file.
+
+2009-01-28 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf: Add line table support.
+ * c++/values.cc: New file.
+ * c++/line_info.cc: New file.
+ * c++/subr.hh: New file.
+ * Makefile.am (pkginclude_HEADERS): Add it.
+
+2009-01-26 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf (dwarf_output): Renamed to dwarf_edit and moved to ...
+ * c++/dwarf_edit: ... here. New file.
+ * Makefile.am (pkginclude_HEADERS): Add it.
+
+2009-01-10 Roland McGrath <roland@redhat.com>
+
+ * c++/dwarf: New file.
+ * Makefile.am (pkginclude_HEADERS): Add it.
+
2009-10-15 Roland McGrath <roland@redhat.com>
* libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
+2009-10-02 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (talker): Show missing/extra children, not just count.
+ (noisy_compare): In explicit-offsets case, print for a positive match.
+
+ * dwarfcmp.cc (talker::print_one_reference_mismatch): Compare entries,
+ not references.
+
+2009-10-01 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc: Support more than for arguments to compare multiple
+ right-hand side entries against the same left-hand side.
+
+ * dwarfcmp.cc (talker): Describe reference mismatch details at the
+ end, iterating when that mentions new mismatches.
+
+2009-09-30 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc: Support four-argument usage to compare specific entries.
+
+2009-09-15 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (talker, noisy_cmp): Describe context mismatch details
+ at the end.
+
+2009-08-27 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (do_writer_test): New function, broken out of ...
+ (main): ... here.
+ [TEST]: Conditionalize -T and all its code on this.
+
+2009-08-25 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (talker): Track real vs fake-positive match result
+ and cache only real results in the real tracker.
+
+2009-08-20 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (verbose): New variable.
+ (options, parse_opt): Add --verbose/-l to set it.
+ (talker): Keep going after mismatches when verbose.
+
+2009-08-19 Roland McGrath <roland@redhat.com>
+
+ Diagnose reference mismatches with more detail.
+ * dwarfcmp.cc (talker::reference_mismatch): New method.
+ (talker::mismatch): Call it.
+
+ * dwarfcmp.cc (talker): Update constructor for tracker changes.
+
+2009-08-16 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (main): Call dwarf_end before return, for happy valgrind.
+
+2009-07-06 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (test_writer): Make it an int.
+ (parse_opt): Make -T increment it.
+ (main): Test only dwarf_output for -T, only dwarf_edit for -TT,
+ both only for -TTT.
+
+2009-07-03 Roland McGrath <roland@redhat.com>
+
+ * Makefile.am (AM_CXXFLAGS): Drop -Wno-unused-parameter.
+
+ * dwarfcmp.cc (open_file): Exit 77 for no DWARF under -T.
+
+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.
+
+2009-07-01 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (talker): Update constructor parameters.
+
+2009-06-19 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc: Revamp using dwarf_comparator.
+
+ * dwarflint-expected-at.cc: Include <config.h> first.
+ * dwarflint-expected.hh (expected_map::expectation_map):
+ Use dwarf::tags.
+ (to_string): Function removed.
+ * dwarflint-hl.cc (recursively_validate): Don't use it.
+
+ * dwarflint.c (abbrev_table_load): No-op control flow fiddle
+ silences gcc-4.4 -O3 warning.
+
+2009-04-02 Roland McGrath <roland@redhat.com>
+
+ * Makefile.am (noinst_HEADERS): Add dwarfstrings.h here.
+ (dwarflint_SOURCES): Add dwarflint-expected.hh and dwarflint.h here.
+ (noinst_HEADERS): Add expr_opcodes.h too.
+
+2009-03-24 Roland McGrath <roland@redhat.com>
+
+ * Makefile.am (libdwplusplus_SOURCES): Variable removed.
+ (dwarfcmp_SOURCES, dwarflint_SOURCES): Don't use it.
+ (libdwpp): New variable.
+ (dwarfcmp_LDADD, dwarflint_LDADD): Use it.
+
+2009-03-05 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Add --nohl command line switch.
+
+2009-01-28 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Coding style cleanups.
+ (found_hole): Tolerate zero-padding to given alignment.
+
+2009-01-27 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement validation of .debug_ranges and
+ references from .debug_info to .debug_ranges.
+
+2009-01-27 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Check that the base address selection entry
+ actually changes base address.
+
+2009-01-27 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Match the way dwarflint reports offsets with the
+ way elfutils does it.
+
+2009-01-26 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c (check_aranges_structural): Check that each CU is
+ referenced from one aranges section only.
+ (check_pub_structural): Likewise for pubnames and pubtypes.
+ (read_ctx_read_uleb128): Allow ten-byte ULEB128.
+
+2009-01-23 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c (check_debug_info_structural): Check that all CUs
+ have the same address size.
+
+2009-01-17 Roland McGrath <roland@redhat.com>
+
+ * expr_opcodes.h: Fix DW_OP_deref entry.
+ Add DW_OP_GNU_push_tls_address, DW_OP_GNU_uninit.
+
+2009-01-17 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Better location handling: references now carry
+ along where did they originate (i.e. which section, offset, etc.),
+ all messages are location-aware.
+ (struct where): New structure that captures location inside the
+ Dwarf file. Can be chained to achieve chains of "caused by this
+ reference" messages ala GCC.
+
+2009-01-15 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement validation of .debug_loc and references
+ from .debug_info to .debug_loc.
+
+2009-01-14 Petr Machata <pmachata@redhat.com>
+
+ * dwarfstrings.h (dwarf_locexpr_opcode_string): New.
+
+2009-01-14 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Validation .debug_pubtypes.
+
+2009-01-13 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Adjust check_pubnames_structural to be able to
+ validate also .debug_pubtypes.
+
+2009-01-13 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Rewrite message macros to functions. This makes it
+ possible to rewrite several other macros to functions.
+
+2009-01-12 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement validation of .debug_pubnames.
+
+2009-01-12 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Check padding between sections in .debug_aranges.
+
+2009-01-12 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: For DIE references, remember both referrer and
+ referree. Add a new data structure ref_record to support that.
+ Add new message category, mc_die_rel_ref. Rename other DIE
+ relationship categories to mc_die_rel_* pattern.
+
+2009-01-12 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Changes in data structures for recording DIEs and CUs.
+
+2009-01-12 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement validation of .debug_aranges.
+
+2009-01-11 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c (process_file): Handle absence of .debug_info,
+ .debug_abbrev and .debug_str gracefully.
+
+2009-01-11 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: A couple small fixes across the code.
+ (check_debug_info_structural): Return bool.
+ (check_cu_structural): Likewise.
+ (check_addr_record_addr): Likewise.
+ (check_die_references): Likewise.
+
+2009-01-10 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc (test_writer): New variable.
+ (options, parse_opt): Grok -T/--test-writer to set it.
+ (main): When set, exercise dwarf_output constructors and comparators.
+
+ * dwarflint.c (options, parse_opt): Replace --no-debug with
+ -i/--ignore-missing, to match dwarfcmp.
+
+2009-01-10 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement --no-debug: silently accept file, if its
+ debug info is not available.
+
+2009-01-10 Roland McGrath <roland@redhat.com>
+
+ * dwarfcmp.cc: New file.
+ * Makefile.am (bin_PROGRAMS): Add dwarfcmp.
+ (dwarfcmp_SOURCES): New variable.
+ (dwarfcmp_no_Wformat, dwarfcmp_LDADD): New variables.
+
+2009-01-10 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Implement fine-grained message selection. Each
+ message has a category, which is bitwise OR of category options.
+ There are acceptance and rejection criteria for warnings and
+ errors, which can be tuned using command-line options (currently
+ --strict and --gnu).
+ Use dwarfstrings.h in two messages.
+
+2009-01-10 Petr Machata <pmachata@redhat.com>
+
+ * readelf.c: Extract functions that format dwarf enums into a file
+ of its own, so it can be shared with dwarflint.
+ * dwarfstrings.h: That file.
+
+2009-01-09 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Sort the abbrev tables and look up abbreviations
+ with bisect search.
+
+2009-01-09 Petr Machata <pmachata@redhat.com>
+
+ * dwarflint.c: Checking for zero padding and unreferenced bytes.
+ CU size and padding at the end of CU are now checked.
+
+ 2009-11-16 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (print_string_section): Punt SHT_NOBITS like empty
+ sections, just as dump_data_section already does.
+
2009-09-21 Ulrich Drepper <drepper@redhat.com>
* elflint.c (special_sections): Allow MERGE and STRINGS flags to be