llvm-symbolizer --markup-filter does not adjust addresses without debug info
#63,178 opened on Jun 7, 2023
Repository metrics
- Stars
- (26,378 stars)
- PR merge metrics
- (Avg merge 1d 2h) (1,000 merged PRs in 30d)
Description
If a lookup for debug info fails when symbolizing a log containing markup, a raw representation of the element is printed instead of a best effort version of the value. This makes sense for syntactic or semantic errors, but in cases where debug info simply cannot be found, there is still a good deal of information that the filter can print simply through the contextual markup elements. In particular, it can print addresses adjusted by the runtime memory layout of the process, which makes it easier to e.g. objdump the addresses later.
Fixing this should just be a matter of printing something like [[[PC <addr>]]] instead of the current printRawElement. In these cases the correct address has already been computed, so it should be a relatively straightforward change.
Reference: llvm/lib/DebugInfo/Symbolize/MarkupFilter.cpp Symbolizer Markup Format