Author: stella.stamenova Date: Mon Jul 9 10:36:33 2018 New Revision: 336564
URL: http://llvm.org/viewvc/llvm-project?rev=336564&view=rev Log: Retrieve a function PDB symbol correctly from nested blocks Summary: This patch fixes a problem with retrieving a function symbol by an address in a nested block. In the current implementation of ResolveSymbolContext function it retrieves a symbol with PDB_SymType::None and then checks if found symbol's tag equals to PDB_SymType::Function. So, if nested block's symbol was found, ResolveSymbolContext does not resolve a function. It is very simple to reproduce this. For example, in the next program ``` int main() { auto r = 0; for (auto i = 1; i <= 10; i++) { r += i & 1 + (i - 1) & 1 - 1; } return r; } ``` if we will stop inside the cycle and will do a backtrace, the top element will be broken. But how we can test this? I thought to add an option to lldb-test to allow search a function by address, but the address may change when the compiler will be changed. Patch by: Aleksandr Urakov Reviewers: asmith, labath, zturner Reviewed By: asmith, labath Subscribers: stella.stamenova, llvm-commits Differential Revision: https://reviews.llvm.org/D47939 Modified: lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test Modified: lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test?rev=336564&r1=336563&r2=336564&view=diff ============================================================================== --- lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test (original) +++ lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test Mon Jul 9 10:36:33 2018 @@ -4,4 +4,4 @@ RUN: lld-link /debug:full /nodefaultlib RUN: lldb-test symbols -find=function -file FunctionNestedBlockTest.cpp -line 4 %t.exe | FileCheck %s CHECK: Found 1 functions: -CHECK: name = "{{.*}}", mangled = "_main" +CHECK: name = "{{.*}}", mangled = "{{_?}}main" _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits