Closed dsteeley closed 2 years ago
Again, awfully sorry for letting this "rust" for over a month. Thanks a lot for your very nice debugging, investigation and implementation!
I'm investigating a problem with the bash tests caused by these commits, but I'll fix that issue.
The bash issue has been fixed with 652409e, but it would be good to get confirmation that it doesn't break the intended fix for Rust (and maybe other targets?).
kcov currently only allows an address to be mapped to a single line.
Rust produces coverage information of the form:
kcov reads this information for
lib.rs:8
, and gets the mapping for0x1e480
and creates a mapping and life is good.It then reads the information for
lib.rs:10
and gets the mapping for0x1e480
, and overwrites the mapping forlib.rs:8
(leaking it in the process), and life is now not good.To resolve this, I've tweaked kcov, so that it's address mapping is now a
std::map<uint64_t, std::vector<Line*>>
instead of just being astd::map<uint64_t, Line*>
.