llvm-symbolizer --markup-filter does not adjust addresses without debug info
#63,178 创建于 2023年6月7日
仓库指标
- Star
- (26,378 star)
- PR 合并指标
- (平均合并 1天 2小时) (30 天内合并 1,000 个 PR)
描述
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