llvm/llvm-project

llvm-symbolizer --markup-filter does not adjust addresses without debug info

Open

#63,178 opened on 2023年6月7日

GitHub で見る
 (10 comments) (0 reactions) (1 assignee)C++ (10,782 forks)batch import
good first issuetools:llvm-symbolizer

Repository metrics

Stars
 (26,378 stars)
PR merge metrics
 (平均マージ 1d 2h) (30d で 1,000 merged PRs)

説明

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

コントリビューターガイド