Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Differences from LLVM output #324

Open
philipc opened this issue Aug 3, 2024 · 1 comment
Open

Differences from LLVM output #324

philipc opened this issue Aug 3, 2024 · 1 comment

Comments

@philipc
Copy link
Contributor

philipc commented Aug 3, 2024

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.
@gdh1995
Copy link

gdh1995 commented Aug 12, 2024

The 4th point is also what I met in #326 (comment) .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants