[PATCH] D88988: [llvm-symbolizer] Add inline stack traces for Windows.

Amy Huang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 19 15:36:06 PDT 2020


akhuang added a comment.

on the failing asan tests: I assume the symbolizer is doing the correct thing (since the native and DIA implementations do the same thing), so I think I'll just update the tests to accept the extra line. I was wondering why we don't get this line on Linux, though, so I looked at where the address is in the `calloc` function in assembly, and it seems to be in a different part of the function on Windows and Linux.



================
Comment at: llvm/lib/DebugInfo/PDB/Native/NativeFunctionSymbol.cpp:59
+
+static bool inlineSiteContainsAddress(InlineSiteSym &IS,
+                                      uint32_t OffsetInFunc) {
----------------
amccarth wrote:
> akhuang wrote:
> > I think this sometimes returns true incorrectly, seems like it happens when there are multiple ChangeCodeLength annotations. Maybe I'm interpreting those incorrectly? 
> I don't know much about these annotations.  Can these be nested?  For example if `foo` runs from f0 to f1 and the annotations also describe another subrange inside of f0..f1, then I would think `Found` would have to be a counter rather than a bool.  If it's 0, you're not inside any range.  If it's 2, you're inside two nested ranges.
> 
> If they don't nest, then I don't see a problem.
I figured out why I was getting different results with DIA, and it turned out to be unrelated to the inline code. (I wasn't specificying PDB_SymType::Function when searching for the parent function, and I guess my implementation for findSymbolByAddress is different). 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88988/new/

https://reviews.llvm.org/D88988



More information about the llvm-commits mailing list