Author: ted Date: Wed Mar 9 16:05:17 2016 New Revision: 263066 URL: http://llvm.org/viewvc/llvm-project?rev=263066&view=rev Log: Fix "ninja check-lldb" crash in IRExecutionUnit.cpp
Summary: From Adrian McCarthy: "Running ninja check-lldb now has one crash in a Python process, due to deferencing a null pointer in IRExecutionUnit.cpp: candidate_sc.symbol is null, which leads to a call with a null this pointer." Reviewers: zturner, spyffe, amccarth Subscribers: ted, jingham, lldb-commits Differential Revision: http://reviews.llvm.org/D17860 Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRExecutionUnit.cpp?rev=263066&r1=263065&r2=263066&view=diff ============================================================================== --- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original) +++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Wed Mar 9 16:05:17 2016 @@ -798,15 +798,25 @@ IRExecutionUnit::FindInSymbols(const std const bool is_external = (candidate_sc.function) || (candidate_sc.symbol && candidate_sc.symbol->IsExternal()); + if (candidate_sc.symbol) + { + load_address = candidate_sc.symbol->ResolveCallableAddress(*target); - load_address = candidate_sc.symbol->ResolveCallableAddress(*target); + if (load_address == LLDB_INVALID_ADDRESS) + { + if (target->GetProcessSP()) + load_address = candidate_sc.symbol->GetAddress().GetLoadAddress(target); + else + load_address = candidate_sc.symbol->GetAddress().GetFileAddress(); + } + } - if (load_address == LLDB_INVALID_ADDRESS) + if (load_address == LLDB_INVALID_ADDRESS && candidate_sc.function) { - if (target->GetProcessSP()) - load_address = candidate_sc.symbol->GetAddress().GetLoadAddress(target); - else - load_address = candidate_sc.symbol->GetAddress().GetFileAddress(); + if (target->GetProcessSP()) + load_address = candidate_sc.function->GetAddressRange().GetBaseAddress().GetLoadAddress(target); + else + load_address = candidate_sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); } if (load_address != LLDB_INVALID_ADDRESS) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits