Index: source/Expression/IRExecutionUnit.cpp =================================================================== --- source/Expression/IRExecutionUnit.cpp +++ source/Expression/IRExecutionUnit.cpp @@ -798,15 +798,25 @@ 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)