ted updated this revision to Diff 50189.
ted added a comment.
Updated to address Jim's comments.
http://reviews.llvm.org/D17860
Files:
source/Expression/IRExecutionUnit.cpp
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)
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)
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits