On 01/12/2015 01:25 PM, Mark Wielaard wrote: > On Sat, 2014-12-27 at 16:49 +0100, Mark Wielaard wrote: >> I think you are right and those tests, addrscopes and funcscopes, are >> wrong. They use dwfl_module_getsrc to find the line associated with start >> and end of the scope. But for the end they use the value of the high_pc >> attribute. The high_pc attributes indicates the first address beyond >> the current scope of the associated DIE. So the tests should use >> highpc - 1 as end of scope. >> >> I created a patch to change dwfl_module_getsrc to not match against >> a line with end_sequence set, changed the tests to use highpc -1. >> And adjusted this patch for dwarf_getsrc_die. to match the new >> behavior. Do those changes look correct to you? > > Those are the following 2 commits on the mjw/pending branch:
Both look good to me. > commit f5ea852c13d94fc04cdbd1d49c9185246d78fc62 > Author: Mark Wielaard <[email protected]> > Date: Wed Dec 24 13:17:23 2014 +0100 > > libdw: Search for the last matching address with dwarf_getsrc_die. > > In commit 7d9b5a dwfl_module_getsrc was changed so that it returns the > last > line record <= addr, rather than returning immediately on a match. This > changes dwarf_getsrc_die to do the same. And it adds a new test that > checks > this by comparing against the same results from eu-addr2line (which uses > dwfl_module_getsrc) using dwarf_addrdie and dwarf_getsrc_die instead. > > Signed-off-by: Mark Wielaard <[email protected]> > > commit bc000d1b457dfec65c20d43abd0dcc634f2e43cb > Author: Mark Wielaard <[email protected]> > Date: Sat Dec 27 16:16:29 2014 +0100 > > libdwfl: dwfl_module_getsrc should never match end_sequence line. > > The line with end_sequence set has an address outside the current line > sequence. An end_sequence line has no other useful information except > marking the address as out of range. > > Two tests, addrscopes and funcscopes, depended on matching the > end_sequence > line. But that was because they included the high_pc address in the scope. > However the high_pc attributes has as address the first location past the > range associated with a given DIE. Adjust the tests to use high_pc - 1 as > end of the scope. > > Signed-off-by: Mark Wielaard <[email protected]> >
