]>
git.ipfire.org Git - thirdparty/elfutils.git/log
Mark Wielaard [Wed, 23 Mar 2011 12:31:06 +0000 (13:31 +0100)]
Add support for low-level dwarflint checks for call_site and entry_value.
Mark Wielaard [Wed, 23 Mar 2011 09:17:48 +0000 (10:17 +0100)]
Copy master readelf.c dwarf_tag/attr_string changes to dwarfstrings.c.
Mark Wielaard [Wed, 23 Mar 2011 09:07:44 +0000 (10:07 +0100)]
Merge branch 'master' into dwarf
Conflicts:
libdw/ChangeLog
src/readelf.c
tests/ChangeLog
tests/Makefile.am
Mark Wielaard [Tue, 22 Mar 2011 22:03:31 +0000 (23:03 +0100)]
Add support for call_site and entry_value to dwarf.h and readelf.
New tags DW_TAG_GNU_call_site and DW_TAG_GNU_call_site_parameter.
New attributes DW_AT_GNU_call_site_value,
DW_AT_GNU_call_site_data_value, DW_AT_GNU_call_site_target,
DW_AT_GNU_call_site_target_clobbered, DW_AT_GNU_tail_call,
DW_AT_GNU_all_tail_call_sites, DW_AT_GNU_all_call_sites,
and DW_AT_GNU_all_source_call_sites.
New operation DW_OP_GNU_entry_value.
Petr Machata [Tue, 22 Mar 2011 11:50:36 +0000 (12:50 +0100)]
dwarflint: Only add range to CU DIE coverage if low_pc > high_pc
Petr Machata [Mon, 21 Mar 2011 15:47:26 +0000 (16:47 +0100)]
dwarflint: Fix reporting of CU x arange mismatch
- report the direction of mismatch correctly
- clarify that we only care about CU DIEs, not any old DIE. Clarify that
in a comment in check_debug_info
Petr Machata [Sat, 19 Mar 2011 10:55:07 +0000 (11:55 +0100)]
dwarflint: Check that operand of DW_LNE_set_address is != 0
Petr Machata [Sat, 19 Mar 2011 10:53:31 +0000 (11:53 +0100)]
dwarflint: Do the ET_REL layout starting on address > 0
Mark Wielaard [Fri, 18 Mar 2011 10:38:38 +0000 (11:38 +0100)]
dwarlint check_debug_line.cc DW_LNS_advance_line takes a sleb128 operan.
Petr Machata [Fri, 18 Mar 2011 09:05:57 +0000 (10:05 +0100)]
dwarflint: DW_AT_high_pc always has to be >= DW_AT_low_pc
Petr Machata [Fri, 18 Mar 2011 00:21:12 +0000 (01:21 +0100)]
dwarflint: Also cover DW_AT_low_pc == DW_AT_high_pc (if that is > 0)
Petr Machata [Fri, 18 Mar 2011 00:12:34 +0000 (01:12 +0100)]
dwarflint: Catch and report exceptions thrown in checks
Petr Machata [Thu, 17 Mar 2011 23:01:38 +0000 (00:01 +0100)]
dwarflint: Add a check for DW_AT_low_pc > DW_AT_high_pc
Petr Machata [Thu, 17 Mar 2011 22:28:44 +0000 (23:28 +0100)]
dwarflint: Support DW_AT_high_pc that is constant, check low_pc <= high_pc
Petr Machata [Thu, 17 Mar 2011 16:20:22 +0000 (17:20 +0100)]
Merge branch 'dwarf' of ssh://git.fedorahosted.org/git/elfutils into dwarf
Petr Machata [Thu, 17 Mar 2011 16:19:52 +0000 (17:19 +0100)]
dwarflint: Extract "local function" out of the method
Petr Machata [Thu, 17 Mar 2011 16:18:29 +0000 (17:18 +0100)]
dwarflint: Add a test case for check_self_referential_die
Petr Machata [Thu, 17 Mar 2011 16:08:35 +0000 (17:08 +0100)]
Merge remote-tracking branch 'origin/mjw/check_self_referential_die' into dwarf
Petr Machata [Thu, 17 Mar 2011 16:06:53 +0000 (17:06 +0100)]
dwarflint: Fix message filtering
Mark Wielaard [Thu, 17 Mar 2011 11:46:06 +0000 (12:46 +0100)]
Workaround all self referential ref values, not just DW_AT_containing_type.
Petr Machata [Thu, 17 Mar 2011 12:17:35 +0000 (13:17 +0100)]
dwarflint: More thorough validation of ELF sections
Mark Wielaard [Thu, 17 Mar 2011 11:38:45 +0000 (12:38 +0100)]
Add check_self_referential_die pass to dwarflint.
Petr Machata [Thu, 17 Mar 2011 09:51:58 +0000 (10:51 +0100)]
dwarflint: Check that .shstrtab is sound
Petr Machata [Wed, 16 Mar 2011 23:11:21 +0000 (00:11 +0100)]
Merge branch 'dwarf' of ssh://git.fedorahosted.org/git/elfutils into dwarf
Petr Machata [Wed, 16 Mar 2011 23:10:56 +0000 (00:10 +0100)]
dwarflint: Better validation of .debug_line table header length
Mark Wielaard [Mon, 21 Feb 2011 15:58:26 +0000 (16:58 +0100)]
Workaround weird (buggy) self referential DW_AT_containing_type case.
https://fedorahosted.org/pipermail/elfutils-devel/2011-February/001792.html
Mark Wielaard [Mon, 21 Feb 2011 14:21:51 +0000 (15:21 +0100)]
Add reference chain cycle detection.
Mark Wielaard [Fri, 18 Feb 2011 19:16:03 +0000 (20:16 +0100)]
Calculate reference hash before finalizing, store in die_info.
Follows whole reference chain (ignoring children) and combines
local references of all dies found. Reduces number of attr_set
collisions a lot. Unfortunately there are circular reference
chains for some larger c++ programs. That was unexpected.
Needs cycle detection to figure out what is going on.
Mark Wielaard [Fri, 18 Feb 2011 10:03:52 +0000 (11:03 +0100)]
Add get_die_info to references, use for hash calculation.
Mark Wielaard [Fri, 18 Feb 2011 08:58:28 +0000 (09:58 +0100)]
Never recalculate local hash, always reuse die_info stored one.
Mark Wielaard [Wed, 16 Feb 2011 17:42:29 +0000 (18:42 +0100)]
Fetch local hash from pending or finalized entry die. Use it in attr_value.
Mark Wielaard [Wed, 16 Feb 2011 08:14:23 +0000 (09:14 +0100)]
Don't finalize entries on first go, just create and store die_info for them.
Do all finalization for the whole CU after walking the whole tree.
Mark Wielaard [Mon, 14 Feb 2011 13:36:28 +0000 (14:36 +0100)]
Calculate local_hash only on finalizing entry, store in die_info.
Mark Wielaard [Fri, 21 Jan 2011 21:44:15 +0000 (22:44 +0100)]
Add local hash for children_types.
Mark Wielaard [Fri, 21 Jan 2011 09:37:08 +0000 (10:37 +0100)]
Add local_hash to attributes_type and use it for die hash.
Skips values of reference attributes.
Mark Wielaard [Thu, 20 Jan 2011 15:23:48 +0000 (16:23 +0100)]
Turn copier::entry into a value_reference so what_space works on it.
copier::entry is used as a value_reference when an attr_value has a
dangling reference to a DIE not yet built in the output. So make sure
its type matches that usage.
Mark Wielaard [Thu, 20 Jan 2011 14:28:59 +0000 (15:28 +0100)]
Introduce local_hash for dwarf_output debug_info_die.
Very simplistic local_hash implementation. Just takes tag name,
attributes and children sizes into account. But is good enough to
make all the dwarf_edit_output tests pass. Some dwarfcmp-test-self
tests fail though. it also generates a significant number of
collissions for the dwarf_output_collector attr_sets.
Mark Wielaard [Wed, 23 Feb 2011 18:59:41 +0000 (19:59 +0100)]
Add the *info () hack in dwarf_output, so we can rely on it for now.
Mark Wielaard [Wed, 23 Feb 2011 16:26:09 +0000 (17:26 +0100)]
DW_AT_*_file is allowed to be zero, meaning "no file".
Mark Wielaard [Thu, 13 Jan 2011 12:09:31 +0000 (13:09 +0100)]
Remove unused output-shape from dwarf_output collector.
Petr Machata [Mon, 14 Mar 2011 13:19:59 +0000 (14:19 +0100)]
dwarflint: Replace over-zealous assert with a warning
Mark Wielaard [Thu, 10 Mar 2011 12:02:32 +0000 (13:02 +0100)]
Add new ebl_check_st_other_bits function.
Petr Machata [Thu, 10 Mar 2011 15:03:18 +0000 (16:03 +0100)]
dwarflint: Fix "die chain not terminated by a null entry" for CU DIE
- CU DIE is not part of DIE chain, it's a singleton (with optional null
entries following it as padding)
- consequently, don't emit this message for CU DIE, and change it to full
error for all other cases
Petr Machata [Thu, 10 Mar 2011 14:39:01 +0000 (15:39 +0100)]
dwarflint: Missing DW_LNE_end_sequence OK in empty line number program
- also the fact that the line number program is empty is not a problem
in itself, only when combined with otherwise unused file table
Petr Machata [Thu, 10 Mar 2011 13:54:09 +0000 (14:54 +0100)]
dwarflint: Fix last-die-has-sibling-attr message, don't let such to high-level
Roland McGrath [Thu, 10 Mar 2011 02:21:22 +0000 (18:21 -0800)]
Cosmetic cleanup for new test.
Petr Machata [Thu, 10 Mar 2011 00:50:32 +0000 (01:50 +0100)]
Reject requests for abbreviation with code 0
Petr Machata [Wed, 9 Mar 2011 23:51:43 +0000 (00:51 +0100)]
dwarflint: Detect and diagnose empty CU
Petr Machata [Wed, 9 Mar 2011 20:33:31 +0000 (21:33 +0100)]
dwarflint: Check that CU DIE has stmt_list if children have decl_file
- Mark's test case attached
Roland McGrath [Wed, 9 Mar 2011 18:10:36 +0000 (10:10 -0800)]
Alpha backend: accept any _GLOBAL_OFFSET_TABLE_ value.
Petr Machata [Wed, 9 Mar 2011 18:01:29 +0000 (10:01 -0800)]
Check for truncated section in dwarf_child.
Petr Machata [Wed, 9 Mar 2011 17:10:24 +0000 (18:10 +0100)]
dwarflint: Properly diagnose DW_AT_sibling with value of 0
Petr Machata [Wed, 9 Mar 2011 12:18:18 +0000 (13:18 +0100)]
dwarflint: Fix attribute and form validation in .debug_abbrev and .debug_info
- and a test case that used to SIGSEGV
Petr Machata [Wed, 9 Mar 2011 01:00:28 +0000 (02:00 +0100)]
dwarflint: Fix a SEGV for invalid address size in CU header
- read_address_size has a richer interface now. New type error_code, which
might be more generally useful
- adapt callers
- add test case
Petr Machata [Wed, 9 Mar 2011 00:57:25 +0000 (01:57 +0100)]
dwarflint: Clarify error message when CU headers can't be parsed
Roland McGrath [Wed, 9 Mar 2011 00:26:02 +0000 (16:26 -0800)]
libdwfl: Clear errno before using its ambient value.
Petr Machata [Wed, 9 Mar 2011 00:10:26 +0000 (01:10 +0100)]
dwarflint: Check that there's enough data for .debug_line opcode
- fixes a SEGV on invalid data. Test case provided
Petr Machata [Tue, 8 Mar 2011 22:25:51 +0000 (23:25 +0100)]
dwarflint: Don't let sibling address mismatches to high-level
Petr Machata [Tue, 8 Mar 2011 22:24:53 +0000 (23:24 +0100)]
dwarflint: Don't let unterminated strings in .debug_str to high-level
Petr Machata [Tue, 8 Mar 2011 19:09:14 +0000 (20:09 +0100)]
dwarflint: We should not let the abbrev code 0 propagate up
Petr Machata [Tue, 8 Mar 2011 18:38:39 +0000 (19:38 +0100)]
dwarflint: Update TODO
Petr Machata [Tue, 8 Mar 2011 18:35:07 +0000 (19:35 +0100)]
dwarflint: Fix the check that DIE chains are terminated with null entry
- and turn in to strict message
- and update test cases
Petr Machata [Tue, 8 Mar 2011 18:20:03 +0000 (19:20 +0100)]
dwarflint: Put the --dump-offsets option to the right group
Petr Machata [Tue, 8 Mar 2011 17:53:22 +0000 (18:53 +0100)]
dwarflint: Fix iteration over low-level attributes
- this to allow (certainly bogus, but anyway) attribute name == 0
- test case that triggers this
Marek Polacek [Mon, 7 Mar 2011 19:16:50 +0000 (11:16 -0800)]
New test for dwarf_getstring.
Petr Machata [Mon, 7 Mar 2011 16:30:15 +0000 (17:30 +0100)]
dwarflint: Fail low-level cases if toplevel CU DIE has wrong tag
Petr Machata [Mon, 7 Mar 2011 14:57:38 +0000 (15:57 +0100)]
dwarflint: Check that the name of relocated section is valid
Petr Machata [Mon, 7 Mar 2011 13:21:18 +0000 (14:21 +0100)]
dwarflint: More thorough checking of Dw4Ch7.5 (toplevel CU DIE)
Petr Machata [Mon, 7 Mar 2011 12:35:53 +0000 (13:35 +0100)]
dwarflint: Rename readctx.{c,h} to .{cc,hh}
- I had something in mind that needed the C++ bits from the rest of
dwarflint, but that turned out to be too convoluted to be practical
Petr Machata [Mon, 7 Mar 2011 07:04:34 +0000 (08:04 +0100)]
dwarflint: A note in TODO
Petr Machata [Mon, 7 Mar 2011 07:04:23 +0000 (08:04 +0100)]
dwarflint: Add Mark's test case for the previous commit
Petr Machata [Mon, 7 Mar 2011 07:04:02 +0000 (08:04 +0100)]
dwarflint: Check for excess DIEs on top level
Petr Machata [Mon, 7 Mar 2011 06:59:55 +0000 (07:59 +0100)]
dwarflint: Drop useless variable prev_abbrev in check_debug_info
Petr Machata [Fri, 4 Mar 2011 20:28:40 +0000 (21:28 +0100)]
dwarflint: Publish the option --dump-offsets
- must have been forgotten
- and one coding style nit
Roland McGrath [Thu, 3 Mar 2011 18:48:51 +0000 (10:48 -0800)]
Merge branch 'master' of ssh://git.fedorahosted.org/git/elfutils
Petr Machata [Thu, 3 Mar 2011 16:47:54 +0000 (17:47 +0100)]
dwarflint: Add Mark's test cases
Petr Machata [Thu, 3 Mar 2011 16:02:47 +0000 (17:02 +0100)]
dwarflint: Be lazy when looking into CU headers for check_debug_abbrev
- And so don't complain that we have no headers in cases where we have
no abbrevs either.
- Also consider no abbrevs a message, not an error
- Add a test case for the same
Petr Machata [Thu, 3 Mar 2011 13:24:27 +0000 (14:24 +0100)]
dwarflint: Fix all-dies-it
- Account for the case that die.has_children and at the same time
die.children().begin() == die.children().end()
- Change the algorithm to iterate DIEs acually in pre-order
- Add a test case
Petr Machata [Wed, 2 Mar 2011 20:32:38 +0000 (21:32 +0100)]
dwarflint: Fail check_debug_info test if serious error turns up
- All the tracking was in place, we just forgot to actually throw the
exception in the end.
Petr Machata [Tue, 1 Mar 2011 16:54:54 +0000 (17:54 +0100)]
dwarflint: Check that the relocation is formed using a defined symbol
Petr Machata [Tue, 1 Mar 2011 16:48:37 +0000 (17:48 +0100)]
dwarflint: More checks on invalid section indices in relocations
Petr Machata [Tue, 1 Mar 2011 12:56:27 +0000 (13:56 +0100)]
dwarflint: Extract the relocation logic itself to a function
Petr Machata [Tue, 1 Mar 2011 11:43:11 +0000 (12:43 +0100)]
Fix handling of invalid relocs
Jan Kratochvil [Sun, 27 Feb 2011 20:01:25 +0000 (12:01 -0800)]
Fix readelf --debug-dump=loc crash on multiple input files.
Mark Wielaard [Fri, 25 Feb 2011 19:17:52 +0000 (20:17 +0100)]
BUILT_RPATH vs BUILD_RPATH fixup.
* tests/Makefile.am (BUILD_RPATH): Be consistent in naming.
Petr Machata [Fri, 25 Feb 2011 18:21:30 +0000 (19:21 +0100)]
Nits
Petr Machata [Fri, 25 Feb 2011 18:14:13 +0000 (19:14 +0100)]
Get rid of pri::locexpr_opcode
Petr Machata [Fri, 25 Feb 2011 14:25:16 +0000 (15:25 +0100)]
Drop pri::form
Petr Machata [Fri, 25 Feb 2011 14:19:54 +0000 (15:19 +0100)]
Drop pri::tag, pri::attr
- dwarf::tags::name, dwarf::attributes::name should be used instead
Petr Machata [Fri, 25 Feb 2011 14:06:14 +0000 (15:06 +0100)]
Use dwarf::{attributes,tags}::name instead of dwarf_{attr,tag}_string
Petr Machata [Fri, 25 Feb 2011 13:39:41 +0000 (14:39 +0100)]
Merge branch 'dwarf' of ssh://git.fedorahosted.org/git/elfutils into dwarf
Mark Wielaard [Wed, 23 Feb 2011 22:06:20 +0000 (23:06 +0100)]
tests/run-dwarfcmp-self.sh dwarflint is in its own directory now.
Mark Wielaard [Fri, 25 Feb 2011 12:45:14 +0000 (13:45 +0100)]
Don't use dwarf_tag_string, but dwarf::tags::name for dwarf_edit_output test.
Mark Wielaard [Fri, 25 Feb 2011 12:04:21 +0000 (13:04 +0100)]
Merge over dwarf string fixes from readelf master to dwarfstrings.
* src/dwarfstrings.c (dwarf_tag_string): Add type_unit,
rvalue_reference_type and template_alias.
(dwarf_tag_string): Add GNU_* tags.
(dwarf_attr_string): Add signature, main_subprogram, const_expr
and enum_class.
Mark Wielaard [Fri, 25 Feb 2011 11:58:54 +0000 (12:58 +0100)]
Merge over readelf dwarf string additions from dwarf branch dwarfstrings.
* readelf.c (dwarf_attr_string): Add DW_AT_GNU_* handling.
(dwarf_form_string): Properly format and return unknown form.
Petr Machata [Fri, 25 Feb 2011 11:05:16 +0000 (12:05 +0100)]
Adjust location_attribute::const_iterator to changes in range_list iterator
Petr Machata [Fri, 25 Feb 2011 11:13:53 +0000 (12:13 +0100)]
Use __libdw_formptr in ranges iterator
Roland McGrath [Thu, 24 Feb 2011 23:33:47 +0000 (15:33 -0800)]
Temporarily export __libdw_formptr for use by C++ code.
Roland McGrath [Thu, 24 Feb 2011 23:25:43 +0000 (15:25 -0800)]
Make libdwP.h internal declarations C++-compatible.
Roland McGrath [Thu, 24 Feb 2011 23:11:58 +0000 (15:11 -0800)]
Fix dwarf_path_finder::jump for the general case.