]>
git.ipfire.org Git - thirdparty/elfutils.git/log
Mark Wielaard [Wed, 30 Mar 2011 15:09:17 +0000 (17:09 +0200)]
Add DW_AT_GNU_call attributes to dwarf-knowledge.cc.
DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
DW_AT_GNU_call_site_target and DW_AT_GNU_call_site_target_clobbered
describe locations. 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 are flags.
Petr Machata [Mon, 28 Mar 2011 22:54:48 +0000 (00:54 +0200)]
dwarflint: Add filtering of duplicate messages
- we use the first string component of stream implementation of wr_message
as a key to decide whether we've seen the message before. Most of the
messages use streams, is why it's like that. When (if) we get back to
formatting strings, that string should be even better key, because there
will be less chance for compiler to do duplicate elimination etc.
Petr Machata [Mon, 28 Mar 2011 18:34:28 +0000 (20:34 +0200)]
dwarflint: Drop wr_warning
- wr_error is for outright violations. The rest should be passed through
wr_message to allow filtering
Petr Machata [Mon, 28 Mar 2011 18:19:36 +0000 (20:19 +0200)]
dwarflint: Drop the "cat" function, use operator| instead
Petr Machata [Mon, 28 Mar 2011 14:10:26 +0000 (16:10 +0200)]
Merge branch 'pmachata/dwarflint' into dwarf
Petr Machata [Mon, 28 Mar 2011 13:43:44 +0000 (15:43 +0200)]
dwarflint: Rewrite check_duplicate_DW_tag_variable as a per-DIE check
Petr Machata [Thu, 24 Mar 2011 16:44:12 +0000 (17:44 +0100)]
dwarflint: Add check_die_tree pass for generic per-DIE checks
- add reg_die_check for registering per-DIE check passes
- turn check_registrar into a template to allow reuse among reg<> and
reg_die_check<>
- the per-DIE checking magic is in check_die_tree.hh
- hide most of checks.hh into dwarflint.cc. That has little to do
with per-DIE checks as such, but was a necessary cleanup
Mark Wielaard [Thu, 24 Mar 2011 12:21:43 +0000 (13:21 +0100)]
Merge branch 'mjw/call_site' into dwarf
Petr Machata [Wed, 23 Mar 2011 17:45:05 +0000 (18:45 +0100)]
Merge branch 'dwarf' of ssh://git.fedorahosted.org/git/elfutils into dwarf
Petr Machata [Wed, 23 Mar 2011 17:44:30 +0000 (18:44 +0100)]
dwarflint: Tolerate attributes from all DWARF versions, be less strict
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