You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I stuck a TODO in SourceLineResolver::Module::ParseStackInfo about
conflicting ranges. My current thoughts on fixing this are to store
entries in the ContainedRangeMap with base (rva + code_size) and size
(code_size - prolog_size - epilog_size), and introduce the concept of a
"replacement key", which will be the rva. In a ContainedRangeMap, one
entry may replace another (and inherit any preexisting children) if their
dimensions are identical and the new entry's replacement key is higher than
the existing entry's. ContainedRangeMap::StoreRange should not return
false when inserting a new entry with identical dimensions to an existing
entry, it should return true but should only modify the map in accordance
with the replacement key. This will also cover another case of duplication
I've found in dumped symbol files: when code is optimized such that
multiple functions compile to identical code and actually share the same
code, IDiaFrameData will still be present for each function, all completely
identical.
The current behavior of the ContainedRangeMap can be approximated under
this scheme by using a constant for the replacement key during each
StoreRange call. The only difference is that the return value no longer
indicates whether an entry was stored.
Original issue reported on code.google.com by mmento...@gmail.com on 18 Oct 2006 at 1:17
The text was updated successfully, but these errors were encountered:
Original issue reported on code.google.com by
mmento...@gmail.com
on 18 Oct 2006 at 1:17The text was updated successfully, but these errors were encountered: