Skip to content

Differences from LLVM output #324

Open
@philipc

Description

I've started looking at the recently added benchmarks to check that this crate is returning correct results and not cheating. Some differences so far (these come from looking at the postgresql debug):

  • Missing the discriminator (Handle discriminators #319). This is easy to add, but a breaking change.
  • Our symbol map doesn't use the symbol length, so we return a result for data in between symbols. It's unclear if this matters in practice.
  • If an inlined function is missing a name, we fall back to using the symbol table. llvm-addr2line prints ?? for these. An alternative is to use the name of the function where the inlining occurred.
  • For non-inlined functions, llvm-addr2line gives preference to the name from symbol table over the DWARF. I disagree with this. An example of where this occurs is when a function has been split into disjoint address ranges, such as name and name.cold.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions