summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/API/SBSymbol.cpp31
-rw-r--r--lldb/source/Breakpoint/BreakpointResolverName.cpp8
-rw-r--r--lldb/source/Commands/CommandObjectDisassemble.cpp16
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp6
-rw-r--r--lldb/source/Core/Address.cpp8
-rw-r--r--lldb/source/Core/AddressResolverName.cpp10
-rw-r--r--lldb/source/Core/Debugger.cpp4
-rw-r--r--lldb/source/Core/Disassembler.cpp5
-rw-r--r--lldb/source/Expression/ClangExpressionDeclMap.cpp12
-rw-r--r--lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp2
-rw-r--r--lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp8
-rw-r--r--lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp2
-rw-r--r--lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp2
-rw-r--r--lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp20
-rw-r--r--lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp23
-rw-r--r--lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp2
-rw-r--r--lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp14
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp5
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp22
-rw-r--r--lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp4
-rw-r--r--lldb/source/Symbol/ObjectFile.cpp5
-rw-r--r--lldb/source/Symbol/Symbol.cpp61
-rw-r--r--lldb/source/Symbol/SymbolContext.cpp17
-rw-r--r--lldb/source/Symbol/Symtab.cpp37
-rw-r--r--lldb/source/Target/ThreadPlanStepInRange.cpp2
-rw-r--r--lldb/source/Target/ThreadPlanStepRange.cpp5
27 files changed, 147 insertions, 186 deletions
diff --git a/lldb/source/API/SBSymbol.cpp b/lldb/source/API/SBSymbol.cpp
index 519f96be225..4a89567f3bb 100644
--- a/lldb/source/API/SBSymbol.cpp
+++ b/lldb/source/API/SBSymbol.cpp
@@ -129,16 +129,16 @@ SBSymbol::GetInstructions (SBTarget target)
api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
}
- const AddressRange *symbol_range = m_opaque_ptr->GetAddressRangePtr();
- if (symbol_range)
+ if (m_opaque_ptr->ValueIsAddress())
{
- ModuleSP module_sp (symbol_range->GetBaseAddress().GetModule());
+ ModuleSP module_sp (m_opaque_ptr->GetAddress().GetModule());
if (module_sp)
{
+ AddressRange symbol_range (m_opaque_ptr->GetAddress(), m_opaque_ptr->GetByteSize());
sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture (),
NULL,
exe_ctx,
- *symbol_range));
+ symbol_range));
}
}
}
@@ -161,14 +161,9 @@ SBAddress
SBSymbol::GetStartAddress ()
{
SBAddress addr;
- if (m_opaque_ptr)
+ if (m_opaque_ptr && m_opaque_ptr->ValueIsAddress())
{
- // Make sure the symbol is an address based symbol first:
- AddressRange *symbol_arange_ptr = m_opaque_ptr->GetAddressRangePtr();
- if (symbol_arange_ptr)
- {
- addr.SetAddress (&symbol_arange_ptr->GetBaseAddress());
- }
+ addr.SetAddress (&m_opaque_ptr->GetAddress());
}
return addr;
}
@@ -177,17 +172,13 @@ SBAddress
SBSymbol::GetEndAddress ()
{
SBAddress addr;
- if (m_opaque_ptr)
+ if (m_opaque_ptr && m_opaque_ptr->ValueIsAddress())
{
- AddressRange *symbol_arange_ptr = m_opaque_ptr->GetAddressRangePtr();
- if (symbol_arange_ptr)
+ lldb::addr_t range_size = m_opaque_ptr->GetByteSize();
+ if (range_size > 0)
{
- addr_t byte_size = symbol_arange_ptr->GetByteSize();
- if (byte_size > 0)
- {
- addr.SetAddress (&symbol_arange_ptr->GetBaseAddress());
- addr->Slide (byte_size);
- }
+ addr.SetAddress (&m_opaque_ptr->GetAddress());
+ addr->Slide (m_opaque_ptr->GetByteSize());
}
}
return addr;
diff --git a/lldb/source/Breakpoint/BreakpointResolverName.cpp b/lldb/source/Breakpoint/BreakpointResolverName.cpp
index 616307a0906..83d99f66ac0 100644
--- a/lldb/source/Breakpoint/BreakpointResolverName.cpp
+++ b/lldb/source/Breakpoint/BreakpointResolverName.cpp
@@ -236,9 +236,9 @@ BreakpointResolverName::SearchCallback
SymbolContext symbol_sc;
if (sym_list.GetContextAtIndex(j, symbol_sc))
{
- if (symbol_sc.symbol && symbol_sc.symbol->GetAddressRangePtr())
+ if (symbol_sc.symbol && symbol_sc.symbol->ValueIsAddress())
{
- if (sc.function->GetAddressRange().GetBaseAddress() == symbol_sc.symbol->GetAddressRangePtr()->GetBaseAddress())
+ if (sc.function->GetAddressRange().GetBaseAddress() == symbol_sc.symbol->GetAddress())
{
sym_list.RemoveContextAtIndex(j);
continue; // Don't increment j
@@ -297,9 +297,9 @@ BreakpointResolverName::SearchCallback
{
if (sym_list.GetContextAtIndex(i, sc))
{
- if (sc.symbol && sc.symbol->GetAddressRangePtr())
+ if (sc.symbol && sc.symbol->ValueIsAddress())
{
- break_addr = sc.symbol->GetAddressRangePtr()->GetBaseAddress();
+ break_addr = sc.symbol->GetAddress();
if (m_skip_prologue)
{
diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp
index c2d8968981c..357ff956a58 100644
--- a/lldb/source/Commands/CommandObjectDisassemble.cpp
+++ b/lldb/source/Commands/CommandObjectDisassemble.cpp
@@ -344,7 +344,10 @@ CommandObjectDisassemble::Execute
}
Symbol *symbol = frame->GetSymbolContext(eSymbolContextSymbol).symbol;
if (symbol)
- range = symbol->GetAddressRangeRef();
+ {
+ range.GetBaseAddress() = symbol->GetAddress();
+ range.SetByteSize(symbol->GetByteSize());
+ }
}
// Did the "m_options.frame_line" find a valid range already? If so
@@ -395,8 +398,8 @@ CommandObjectDisassemble::Execute
SymbolContext sc(frame->GetSymbolContext(eSymbolContextFunction | eSymbolContextSymbol));
if (sc.function)
range.GetBaseAddress() = sc.function->GetAddressRange().GetBaseAddress();
- else if (sc.symbol && sc.symbol->GetAddressRangePtr())
- range.GetBaseAddress() = sc.symbol->GetAddressRangePtr()->GetBaseAddress();
+ else if (sc.symbol && sc.symbol->ValueIsAddress())
+ range.GetBaseAddress() = sc.symbol->GetAddress();
else
range.GetBaseAddress() = frame->GetFrameCodeAddress();
}
@@ -437,8 +440,11 @@ CommandObjectDisassemble::Execute
SymbolContext sc(frame->GetSymbolContext(eSymbolContextFunction | eSymbolContextSymbol));
if (sc.function)
range = sc.function->GetAddressRange();
- else if (sc.symbol && sc.symbol->GetAddressRangePtr())
- range = *sc.symbol->GetAddressRangePtr();
+ else if (sc.symbol && sc.symbol->ValueIsAddress())
+ {
+ range.GetBaseAddress() = sc.symbol->GetAddress();
+ range.SetByteSize (sc.symbol->GetByteSize());
+ }
else
range.GetBaseAddress() = frame->GetFrameCodeAddress();
}
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index 1b74e08c0ca..a6d8262adc1 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -3586,11 +3586,7 @@ public:
//ModuleSP new_module_sp (new Module (target_module_file, target_module_arch));
ModuleSP new_module_sp;
- Error error (ModuleList::GetSharedModule (module_spec,
- new_module_sp,
- &target->GetExecutableSearchPaths(),
- NULL,
- NULL));
+ new_module_sp = target->GetSharedModule (module_spec);
if (new_module_sp)
{
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp
index 75eb742fdfe..005a1a03e80 100644
--- a/lldb/source/Core/Address.cpp
+++ b/lldb/source/Core/Address.cpp
@@ -468,7 +468,7 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
if (symbol_name)
{
s->PutCString(symbol_name);
- addr_t delta = file_Addr - symbol->GetAddressRangePtr()->GetBaseAddress().GetFileAddress();
+ addr_t delta = file_Addr - symbol->GetAddress().GetFileAddress();
if (delta)
s->Printf(" + %llu", delta);
showed_info = true;
@@ -632,9 +632,9 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
if (sc.function == NULL && sc.symbol != NULL)
{
// If we have just a symbol make sure it is in the right section
- if (sc.symbol->GetAddressRangePtr())
+ if (sc.symbol->ValueIsAddress())
{
- if (sc.symbol->GetAddressRangePtr()->GetBaseAddress().GetSection() != GetSection())
+ if (sc.symbol->GetAddress().GetSection() != GetSection())
{
// don't show the module if the symbol is a trampoline symbol
show_stop_context = false;
@@ -685,7 +685,7 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
// as our address. If it isn't, then we might have just found
// the last symbol that came before the address that we are
// looking up that has nothing to do with our address lookup.
- if (sc.symbol->GetAddressRangePtr() && sc.symbol->GetAddressRangePtr()->GetBaseAddress().GetSection() != GetSection())
+ if (sc.symbol->ValueIsAddress() && sc.symbol->GetAddress().GetSection() != GetSection())
sc.symbol = NULL;
}
sc.GetDescription(s, eDescriptionLevelBrief, target);
diff --git a/lldb/source/Core/AddressResolverName.cpp b/lldb/source/Core/AddressResolverName.cpp
index 091a02f448f..f1874202fec 100644
--- a/lldb/source/Core/AddressResolverName.cpp
+++ b/lldb/source/Core/AddressResolverName.cpp
@@ -160,9 +160,9 @@ AddressResolverName::SearchCallback
SymbolContext symbol_sc;
if (sym_list.GetContextAtIndex(j, symbol_sc))
{
- if (symbol_sc.symbol && symbol_sc.symbol->GetAddressRangePtr())
+ if (symbol_sc.symbol && symbol_sc.symbol->ValueIsAddress())
{
- if (sc.function->GetAddressRange().GetBaseAddress() == symbol_sc.symbol->GetAddressRangePtr()->GetBaseAddress())
+ if (sc.function->GetAddressRange().GetBaseAddress() == symbol_sc.symbol->GetAddress())
{
sym_list.RemoveContextAtIndex(j);
continue; // Don't increment j
@@ -206,10 +206,10 @@ AddressResolverName::SearchCallback
{
if (sym_list.GetContextAtIndex(i, sc))
{
- if (sc.symbol && sc.symbol->GetAddressRangePtr())
+ if (sc.symbol && sc.symbol->ValueIsAddress())
{
- func_addr = sc.symbol->GetAddressRangePtr()->GetBaseAddress();
- addr_t byte_size = sc.symbol->GetAddressRangePtr()->GetByteSize();
+ func_addr = sc.symbol->GetAddress();
+ addr_t byte_size = sc.symbol->GetByteSize();
if (skip_prologue)
{
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp
index d96b65baa05..3aff807b4ee 100644
--- a/lldb/source/Core/Debugger.cpp
+++ b/lldb/source/Core/Debugger.cpp
@@ -2163,8 +2163,8 @@ Debugger::FormatPrompt
func_addr = inline_range.GetBaseAddress();
}
}
- else if (sc->symbol && sc->symbol->GetAddressRangePtr())
- func_addr = sc->symbol->GetAddressRangePtr()->GetBaseAddress();
+ else if (sc->symbol && sc->symbol->ValueIsAddress())
+ func_addr = sc->symbol->GetAddress();
}
if (func_addr.IsValid())
diff --git a/lldb/source/Core/Disassembler.cpp b/lldb/source/Core/Disassembler.cpp
index 1ab77bb8f14..2882da90a79 100644
--- a/lldb/source/Core/Disassembler.cpp
+++ b/lldb/source/Core/Disassembler.cpp
@@ -484,9 +484,10 @@ Disassembler::Disassemble
{
range = sc.function->GetAddressRange();
}
- else if (sc.symbol && sc.symbol->GetAddressRangePtr())
+ else if (sc.symbol && sc.symbol->ValueIsAddress())
{
- range = *sc.symbol->GetAddressRangePtr();
+ range.GetBaseAddress() = sc.symbol->GetAddress();
+ range.SetByteSize (sc.symbol->GetByteSize());
}
else
{
diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp
index c9f08ebdc9a..12b35f99793 100644
--- a/lldb/source/Expression/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp
@@ -732,7 +732,7 @@ ClangExpressionDeclMap::GetFunctionAddress
if (sym_ctx.function)
func_so_addr = &sym_ctx.function->GetAddressRange().GetBaseAddress();
else if (sym_ctx.symbol)
- func_so_addr = &sym_ctx.symbol->GetAddressRangeRef().GetBaseAddress();
+ func_so_addr = &sym_ctx.symbol->GetAddress();
else
return false;
@@ -759,7 +759,7 @@ ClangExpressionDeclMap::GetSymbolAddress (Target &target, const ConstString &nam
SymbolContext sym_ctx;
sc_list.GetContextAtIndex(i, sym_ctx);
- const Address *sym_address = &sym_ctx.symbol->GetAddressRangeRef().GetBaseAddress();
+ const Address *sym_address = &sym_ctx.symbol->GetAddress();
if (!sym_address || !sym_address->IsValid())
return LLDB_INVALID_ADDRESS;
@@ -1036,7 +1036,7 @@ ClangExpressionDeclMap::LookupDecl (clang::NamedDecl *decl, ClangExpressionVaria
}
else if (expr_var_sp->m_parser_vars->m_lldb_sym)
{
- const Address sym_address = expr_var_sp->m_parser_vars->m_lldb_sym->GetAddressRangeRef().GetBaseAddress();
+ const Address sym_address = expr_var_sp->m_parser_vars->m_lldb_sym->GetAddress();
if (!sym_address.IsValid())
return Value();
@@ -3008,8 +3008,7 @@ ClangExpressionDeclMap::AddOneGenericVariable(NameSearchContext &context,
std::auto_ptr<Value> symbol_location(new Value);
- AddressRange &symbol_range = symbol.GetAddressRangeRef();
- Address &symbol_address = symbol_range.GetBaseAddress();
+ Address &symbol_address = symbol.GetAddress();
lldb::addr_t symbol_load_addr = symbol_address.GetLoadAddress(target);
symbol_location->SetContext(Value::eContextTypeClangType, user_type.GetOpaqueQualType());
@@ -3196,8 +3195,7 @@ ClangExpressionDeclMap::AddOneFunction (NameSearchContext &context,
}
else if (symbol)
{
- fun_address = &symbol->GetAddressRangeRef().GetBaseAddress();
-
+ fun_address = &symbol->GetAddress();
fun_decl = context.AddGenericFunDecl();
}
else
diff --git a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
index 48e9abe5c8d..dde33c390cd 100644
--- a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
+++ b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
@@ -315,7 +315,7 @@ DynamicLoaderDarwinKernel::LoadKernelModuleIfNeeded()
const Symbol *symbol = m_kernel.module_sp->FindFirstSymbolWithNameAndType (kext_summary_symbol, eSymbolTypeData);
if (symbol)
{
- m_kext_summary_header_ptr_addr = symbol->GetValue();
+ m_kext_summary_header_ptr_addr = symbol->GetAddress();
// Update all image infos
ReadAllKextSummaries ();
}
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
index 31e3e5d1b62..3406a898850 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
@@ -342,7 +342,7 @@ DynamicLoaderMacOSXDYLD::ReadDYLDInfoFromMemoryAndSetNotificationCallback(lldb::
static ConstString g_dyld_all_image_infos ("dyld_all_image_infos");
const Symbol *symbol = dyld_module_sp->FindFirstSymbolWithNameAndType (g_dyld_all_image_infos, eSymbolTypeData);
if (symbol)
- m_dyld_all_image_infos_addr = symbol->GetValue().GetLoadAddress(&m_process->GetTarget());
+ m_dyld_all_image_infos_addr = symbol->GetAddress().GetLoadAddress(&m_process->GetTarget());
}
// Update all image infos
@@ -1333,11 +1333,7 @@ DynamicLoaderMacOSXDYLD::AlwaysRelyOnEHUnwindInfo (SymbolContext &sym_ctx)
ModuleSP module_sp;
if (sym_ctx.symbol)
{
- AddressRange *ar = sym_ctx.symbol->GetAddressRangePtr();
- if (ar)
- {
- module_sp = ar->GetBaseAddress().GetModule();
- }
+ module_sp = sym_ctx.symbol->GetAddress().GetModule();
}
if (module_sp.get() == NULL && sym_ctx.function)
{
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
index 3beab917eac..90fd352c3a0 100644
--- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
@@ -184,7 +184,7 @@ AppleObjCRuntime::GetPrintForDebuggerAddr()
contexts.GetContextAtIndex(0, context);
- m_PrintForDebugger_addr.reset(new Address(context.symbol->GetValue()));
+ m_PrintForDebugger_addr.reset(new Address(context.symbol->GetAddress()));
}
return m_PrintForDebugger_addr.get();
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
index eccec263fb8..b65ca92447f 100644
--- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
@@ -546,7 +546,7 @@ AppleObjCRuntimeV2::GetByteOffsetForIvar (ClangASTType &parent_ast_type, const c
|| ivar_offset_symbol.symbol == NULL)
return LLDB_INVALID_IVAR_OFFSET;
- addr_t ivar_offset_address = ivar_offset_symbol.symbol->GetValue().GetLoadAddress (&target);
+ addr_t ivar_offset_address = ivar_offset_symbol.symbol->GetAddress().GetLoadAddress (&target);
Error error;
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
index 5a9d2ab8fcf..53a41ee989d 100644
--- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
@@ -355,10 +355,10 @@ AppleObjCTrampolineHandler::AppleObjCVTables::InitializeVTableSymbols ()
eSymbolTypeData);
if (trampoline_symbol != NULL)
{
- if (!trampoline_symbol->GetValue().IsValid())
+ if (!trampoline_symbol->GetAddress().IsValid())
return false;
- m_trampoline_header = trampoline_symbol->GetValue().GetLoadAddress(&target);
+ m_trampoline_header = trampoline_symbol->GetAddress().GetLoadAddress(&target);
if (m_trampoline_header == LLDB_INVALID_ADDRESS)
return false;
@@ -368,10 +368,10 @@ AppleObjCTrampolineHandler::AppleObjCVTables::InitializeVTableSymbols ()
eSymbolTypeCode);
if (changed_symbol != NULL)
{
- if (!changed_symbol->GetValue().IsValid())
+ if (!changed_symbol->GetAddress().IsValid())
return false;
- lldb::addr_t changed_addr = changed_symbol->GetValue().GetOpcodeLoadAddress (&target);
+ lldb::addr_t changed_addr = changed_symbol->GetAddress().GetOpcodeLoadAddress (&target);
if (changed_addr != LLDB_INVALID_ADDRESS)
{
BreakpointSP trampolines_changed_bp_sp = target.CreateBreakpoint (changed_addr, true);
@@ -543,13 +543,13 @@ AppleObjCTrampolineHandler::AppleObjCTrampolineHandler (const ProcessSP &process
const Symbol *msg_forward_stret = m_objc_module_sp->FindFirstSymbolWithNameAndType (msg_forward_stret_name, eSymbolTypeCode);
if (class_getMethodImplementation)
- m_impl_fn_addr = class_getMethodImplementation->GetValue().GetOpcodeLoadAddress (target);
+ m_impl_fn_addr = class_getMethodImplementation->GetAddress().GetOpcodeLoadAddress (target);
if (class_getMethodImplementation_stret)
- m_impl_stret_fn_addr = class_getMethodImplementation_stret->GetValue().GetOpcodeLoadAddress (target);
+ m_impl_stret_fn_addr = class_getMethodImplementation_stret->GetAddress().GetOpcodeLoadAddress (target);
if (msg_forward)
- m_msg_forward_addr = msg_forward->GetValue().GetOpcodeLoadAddress(target);
+ m_msg_forward_addr = msg_forward->GetAddress().GetOpcodeLoadAddress(target);
if (msg_forward_stret)
- m_msg_forward_stret_addr = msg_forward_stret->GetValue().GetOpcodeLoadAddress(target);
+ m_msg_forward_stret_addr = msg_forward_stret->GetAddress().GetOpcodeLoadAddress(target);
// FIXME: Do some kind of logging here.
if (m_impl_fn_addr == LLDB_INVALID_ADDRESS || m_impl_stret_fn_addr == LLDB_INVALID_ADDRESS)
@@ -570,7 +570,7 @@ AppleObjCTrampolineHandler::AppleObjCTrampolineHandler (const ProcessSP &process
// Problem is we also need to lookup the dispatch function. For now we could have a side table of stret & non-stret
// dispatch functions. If that's as complex as it gets, we're fine.
- lldb::addr_t sym_addr = msgSend_symbol->GetValue().GetOpcodeLoadAddress(target);
+ lldb::addr_t sym_addr = msgSend_symbol->GetAddress().GetOpcodeLoadAddress(target);
m_msgSend_map.insert(std::pair<lldb::addr_t, int>(sym_addr, i));
}
@@ -888,7 +888,7 @@ AppleObjCTrampolineHandler::GetStepThroughDispatchPlan (Thread &thread, bool sto
SymbolContext sc;
sc_list.GetContextAtIndex(0, sc);
if (sc.symbol != NULL)
- impl_code_address = sc.symbol->GetValue();
+ impl_code_address = sc.symbol->GetAddress();
//lldb::addr_t addr = impl_code_address.GetOpcodeLoadAddress (exe_ctx.GetTargetPtr());
//printf ("Getting address for our_utility_function: 0x%llx.\n", addr);
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 68121b0c17a..e5e0473f9de 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -606,10 +606,9 @@ ObjectFileMachO::GetAddressClass (lldb::addr_t file_addr)
Symbol *symbol = symtab->FindSymbolContainingFileAddress(file_addr);
if (symbol)
{
- const AddressRange *range_ptr = symbol->GetAddressRangePtr();
- if (range_ptr)
+ if (symbol->ValueIsAddress())
{
- SectionSP section_sp (range_ptr->GetBaseAddress().GetSection());
+ SectionSP section_sp (symbol->GetAddress().GetSection());
if (section_sp)
{
const SectionType section_type = section_sp->GetType();
@@ -1881,8 +1880,8 @@ ObjectFileMachO::ParseSymtab (bool minimize)
sym[sym_idx].SetID (nlist_idx);
sym[sym_idx].SetType (type);
- sym[sym_idx].GetAddressRangeRef().GetBaseAddress().SetSection (symbol_section);
- sym[sym_idx].GetAddressRangeRef().GetBaseAddress().SetOffset (symbol_value);
+ sym[sym_idx].GetAddress().SetSection (symbol_section);
+ sym[sym_idx].GetAddress().SetOffset (symbol_value);
sym[sym_idx].SetFlags (nlist.n_type << 16 | nlist.n_desc);
++sym_idx;
@@ -1905,7 +1904,7 @@ ObjectFileMachO::ParseSymtab (bool minimize)
nlist_idx < symtab_load_command.nsyms && (global_symbol = symtab->FindSymbolWithType (eSymbolTypeData, Symtab::eDebugYes, Symtab::eVisibilityAny, nlist_idx)) != NULL;
nlist_idx++)
{
- if (global_symbol->GetValue().GetFileAddress() == 0)
+ if (global_symbol->GetAddress().GetFileAddress() == 0)
{
std::vector<uint32_t> indexes;
if (symtab->AppendSymbolIndexesWithName (global_symbol->GetMangled().GetName(), indexes) > 0)
@@ -1917,7 +1916,7 @@ ObjectFileMachO::ParseSymtab (bool minimize)
symbol_ptr = symtab->SymbolAtIndex(*pos);
if (symbol_ptr != global_symbol && symbol_ptr->IsDebug() == false)
{
- global_symbol->SetValue(symbol_ptr->GetValue());
+ global_symbol->GetAddress() = symbol_ptr->GetAddress();
break;
}
}
@@ -1997,8 +1996,8 @@ ObjectFileMachO::ParseSymtab (bool minimize)
// for no good reason.
stub_symbol->SetType (eSymbolTypeTrampoline);
stub_symbol->SetExternal (false);
- stub_symbol->GetAddressRangeRef().GetBaseAddress() = so_addr;
- stub_symbol->GetAddressRangeRef().SetByteSize (symbol_stub_byte_size);
+ stub_symbol->GetAddress() = so_addr;
+ stub_symbol->SetByteSize (symbol_stub_byte_size);
}
else
{
@@ -2009,8 +2008,8 @@ ObjectFileMachO::ParseSymtab (bool minimize)
sym[sym_idx].GetMangled() = stub_symbol->GetMangled();
sym[sym_idx].SetType (eSymbolTypeTrampoline);
sym[sym_idx].SetIsSynthetic (true);
- sym[sym_idx].GetAddressRangeRef().GetBaseAddress() = so_addr;
- sym[sym_idx].GetAddressRangeRef().SetByteSize (symbol_stub_byte_size);
+ sym[sym_idx].GetAddress() = so_addr;
+ sym[sym_idx].SetByteSize (symbol_stub_byte_size);
++sym_idx;
}
}
@@ -2252,7 +2251,7 @@ ObjectFileMachO::GetEntryPointAddress ()
if (module_sp->FindSymbolsWithNameAndType(ConstString ("start"), eSymbolTypeCode, contexts))
{
if (contexts.GetContextAtIndex(0, context))
- m_entry_point_address = context.symbol->GetValue();
+ m_entry_point_address = context.symbol->GetAddress();
}
}
}
diff --git a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
index 692e24ba9cc..407d76ae588 100644
--- a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
+++ b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
@@ -539,7 +539,7 @@ ObjectFilePECOFF::GetSymtab()
symbol.naux = symtab_data.GetU8 (&offset);
Address symbol_addr(sect_list->GetSectionAtIndex(symbol.sect-1), symbol.value);
symbols[i].GetMangled ().SetValue (symbol_name.c_str(), symbol_name[0]=='_' && symbol_name[1] == 'Z');
- symbols[i].SetValue(symbol_addr);
+ symbols[i].GetAddress() = symbol_addr;
if (symbol.naux > 0)
i += symbol.naux;
diff --git a/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp b/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp
index 8cca12046ba..90913b961d5 100644
--- a/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp
+++ b/lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp
@@ -136,10 +136,15 @@ UnwindMacOSXFrameBackchain::GetStackFrameData_i386 (const ExecutionContext &exe_
SymbolContext first_frame_sc (first_frame->GetSymbolContext(resolve_scope));
const AddressRange *addr_range_ptr = NULL;
+ AddressRange range;
if (first_frame_sc.function)
addr_range_ptr = &first_frame_sc.function->GetAddressRange();
else if (first_frame_sc.symbol)
- addr_range_ptr = first_frame_sc.symbol->GetAddressRangePtr();
+ {
+ range.GetBaseAddress() = first_frame_sc.symbol->GetAddress();
+ range.SetByteSize (first_frame_sc.symbol->GetByteSize());
+ addr_range_ptr = &range;
+ }
if (addr_range_ptr)
{
@@ -230,10 +235,15 @@ UnwindMacOSXFrameBackchain::GetStackFrameData_x86_64 (const ExecutionContext &ex
SymbolContext first_frame_sc(first_frame->GetSymbolContext(resolve_scope));
const AddressRange *addr_range_ptr = NULL;
+ AddressRange range;
if (first_frame_sc.function)
addr_range_ptr = &first_frame_sc.function->GetAddressRange();
else if (first_frame_sc.symbol)
- addr_range_ptr = first_frame_sc.symbol->GetAddressRangePtr();
+ {
+ range.GetBaseAddress() = first_frame_sc.symbol->GetAddress();
+ range.SetByteSize (first_frame_sc.symbol->GetByteSize());
+ addr_range_ptr = &range;
+ }
if (addr_range_ptr)
{
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index 7d768ecbc29..5bc0e5e201e 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -2482,7 +2482,7 @@ ProcessGDBRemote::GetDispatchQueueNameForThread
dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, eSymbolTypeData);
}
if (dispatch_queue_offsets_symbol)
- m_dispatch_queue_offsets_addr = dispatch_queue_offsets_symbol->GetValue().GetLoadAddress(&m_target);
+ m_dispatch_queue_offsets_addr = dispatch_queue_offsets_symbol->GetAddress().GetLoadAddress(&m_target);
if (m_dispatch_queue_offsets_addr == LLDB_INVALID_ADDRESS)
return NULL;
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index a8a7c3617bf..058d72ef78b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -6076,10 +6076,9 @@ SymbolFileDWARF::ParseVariableDIE
Symtab::eVisibilityExtern);
if (defined_symbol)
{
- const AddressRange *defined_range = defined_symbol->GetAddressRangePtr();
- if (defined_range)
+ if (defined_symbol->ValueIsAddress())
{
- const addr_t defined_addr = defined_range->GetBaseAddress().GetFileAddress();
+ const addr_t defined_addr = defined_symbol->GetAddress().GetFileAddress();
if (defined_addr != LLDB_INVALID_ADDRESS)
{
if (location.Update_DW_OP_addr (defined_addr))
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
index 7e7204826aa..093ca8f50cb 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -330,8 +330,8 @@ SymbolFileDWARFDebugMap::GetSymbolFileByCompUnitInfo (CompileUnitInfo *comp_unit
if (oso_fun_symbol)
{
// If we found the symbol, then we
- SectionSP exe_fun_section (exe_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection());
- SectionSP oso_fun_section (oso_fun_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection());
+ SectionSP exe_fun_section (exe_symbol->GetAddress().GetSection());
+ SectionSP oso_fun_section (oso_fun_symbol->GetAddress().GetSection());
if (oso_fun_section)
{
// Now we create a section that we will add as a child of the
@@ -342,17 +342,17 @@ SymbolFileDWARFDebugMap::GetSymbolFileByCompUnitInfo (CompileUnitInfo *comp_unit
// size will reflect any size changes (ppc has been known to
// shrink function sizes when it gets rid of jump islands that
// aren't needed anymore).
- SectionSP oso_fun_section_sp (new Section (oso_fun_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection(),
+ SectionSP oso_fun_section_sp (new Section (oso_fun_symbol->GetAddress().GetSection(),
oso_module_sp, // Module (the .o file)
sect_id++, // Section ID starts at 0x10000 and increments so the section IDs don't overlap with the standard mach IDs
exe_symbol->GetMangled().GetName(Mangled::ePreferMangled), // Name the section the same as the symbol for which is was generated!
eSectionTypeDebug,
- oso_fun_symbol->GetAddressRangePtr()->GetBaseAddress().GetOffset(), // File VM address offset in the current section
+ oso_fun_symbol->GetAddress().GetOffset(), // File VM address offset in the current section
exe_symbol->GetByteSize(), // File size (we need the size from the executable)
0, 0, 0));
oso_fun_section_sp->SetLinkedLocation (exe_fun_section,
- exe_symbol->GetValue().GetFileAddress() - exe_fun_section->GetFileAddress());
+ exe_symbol->GetAddress().GetFileAddress() - exe_fun_section->GetFileAddress());
oso_fun_section->GetChildren().AddSection(oso_fun_section_sp);
comp_unit_info->debug_map_sections_sp->AddSection(oso_fun_section_sp);
}
@@ -381,24 +381,24 @@ SymbolFileDWARFDebugMap::GetSymbolFileByCompUnitInfo (CompileUnitInfo *comp_unit
Symtab::eDebugNo,
Symtab::eVisibilityAny);
- if (exe_symbol && oso_gsym_symbol && exe_symbol->GetAddressRangePtr() && oso_gsym_symbol->GetAddressRangePtr())
+ if (exe_symbol && oso_gsym_symbol && exe_symbol->ValueIsAddress() && oso_gsym_symbol->ValueIsAddress())
{
// If we found the symbol, then we
- SectionSP exe_gsym_section (exe_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection());
- SectionSP oso_gsym_section (oso_gsym_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection());
+ SectionSP exe_gsym_section (exe_symbol->GetAddress().GetSection());
+ SectionSP oso_gsym_section (oso_gsym_symbol->GetAddress().GetSection());
if (oso_gsym_section)
{
- SectionSP oso_gsym_section_sp (new Section (oso_gsym_symbol->GetAddressRangePtr()->GetBaseAddress().GetSection(),
+ SectionSP oso_gsym_section_sp (new Section (oso_gsym_symbol->GetAddress().GetSection(),
oso_module_sp, // Module (the .o file)
sect_id++, // Section ID starts at 0x10000 and increments so the section IDs don't overlap with the standard mach IDs
exe_symbol->GetMangled().GetName(Mangled::ePreferMangled), // Name the section the same as the symbol for which is was generated!
eSectionTypeDebug,
- oso_gsym_symbol->GetAddressRangePtr()->GetBaseAddress().GetOffset(), // File VM address offset in the current section
+ oso_gsym_symbol->GetAddress().GetOffset(), // File VM address offset in the current section
1, // We don't know the size of the global, just do the main address for now.
0, 0, 0));
oso_gsym_section_sp->SetLinkedLocation (exe_gsym_section,
- exe_symbol->GetValue().GetFileAddress() - exe_gsym_section->GetFileAddress());
+ exe_symbol->GetAddress().GetFileAddress() - exe_gsym_section->GetFileAddress());
oso_gsym_section->GetChildren().AddSection(oso_gsym_section_sp);
comp_unit_info->debug_map_sections_sp->AddSection(oso_gsym_section_sp);
}
diff --git a/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp b/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
index d4164cd1d31..f4d9e032087 100644
--- a/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
+++ b/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
@@ -207,7 +207,7 @@ SymbolFileSymtab::ParseCompileUnitFunctions (const SymbolContext &sc)
if (curr_symbol)
{
// Union of all ranges in the function DIE (if the function is discontiguous)
- AddressRange func_range(curr_symbol->GetValue(), 0);
+ AddressRange func_range(curr_symbol->GetAddress(), 0);
if (func_range.GetBaseAddress().IsSectionOffset())
{
uint32_t symbol_size = curr_symbol->GetByteSize();
@@ -218,7 +218,7 @@ SymbolFileSymtab::ParseCompileUnitFunctions (const SymbolContext &sc)
next_symbol = symtab->SymbolAtIndex(m_code_indexes[idx + 1]);
if (next_symbol)
{
- func_range.SetByteSize(next_symbol->GetValue().GetOffset() - curr_symbol->GetValue().GetOffset());
+ func_range.SetByteSize(next_symbol->GetAddress().GetOffset() - curr_symbol->GetAddress().GetOffset());
}
}
diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp
index 4f02a93de41..a45ef820f0e 100644
--- a/lldb/source/Symbol/ObjectFile.cpp
+++ b/lldb/source/Symbol/ObjectFile.cpp
@@ -266,10 +266,9 @@ ObjectFile::GetAddressClass (addr_t file_addr)
Symbol *symbol = symtab->FindSymbolContainingFileAddress(file_addr);
if (symbol)
{
- const AddressRange *range_ptr = symbol->GetAddressRangePtr();
- if (range_ptr)
+ if (symbol->ValueIsAddress())
{
- const SectionSP section_sp (range_ptr->GetBaseAddress().GetSection());
+ const SectionSP section_sp (symbol->GetAddress().GetSection());
if (section_sp)
{
const SectionType section_type = section_sp->GetType();
diff --git a/lldb/source/Symbol/Symbol.cpp b/lldb/source/Symbol/Symbol.cpp
index 636670d994f..af7c2d4d527 100644
--- a/lldb/source/Symbol/Symbol.cpp
+++ b/lldb/source/Symbol/Symbol.cpp
@@ -158,28 +158,10 @@ Symbol::Clear()
m_addr_range.Clear();
}
-AddressRange *
-Symbol::GetAddressRangePtr()
+bool
+Symbol::ValueIsAddress() const
{
- if (m_addr_range.GetBaseAddress().GetSection())
- {
- if (!m_calculated_size)
- GetByteSize();
- return &m_addr_range;
- }
- return NULL;
-}
-
-const AddressRange *
-Symbol::GetAddressRangePtr() const
-{
- if (m_addr_range.GetBaseAddress().GetSection())
- {
- if (!m_calculated_size)
- GetByteSize();
- return &m_addr_range;
- }
- return NULL;
+ return m_addr_range.GetBaseAddress().GetSection().get() != NULL;
}
uint32_t
@@ -245,8 +227,10 @@ Symbol::Dump(Stream *s, Target *target, uint32_t index) const
m_is_external ? 'X' : ' ',
GetTypeAsString());
- SectionSP section_sp (m_addr_range.GetBaseAddress().GetSection());
- if (section_sp)
+ // Make sure the size of the symbol is up to date before dumping
+ GetByteSize();
+
+ if (ValueIsAddress())
{
if (!m_addr_range.GetBaseAddress().Dump(s, NULL, Address::DumpStyleFileAddress))
s->Printf("%*s", 18, "");
@@ -304,13 +288,6 @@ Symbol::GetPrologueByteSize ()
return 0;
}
-void
-Symbol::SetValue(addr_t value)
-{
- m_addr_range.GetBaseAddress().SetRawAddress(value);
-}
-
-
bool
Symbol::Compare(const ConstString& name, SymbolType type) const
{
@@ -365,9 +342,8 @@ Symbol::CalculateSymbolContext (SymbolContext *sc)
{
// Symbols can reconstruct the symbol and the module in the symbol context
sc->symbol = this;
- const AddressRange *range = GetAddressRangePtr();
- if (range)
- sc->module_sp = range->GetBaseAddress().GetModule();
+ if (ValueIsAddress())
+ sc->module_sp = GetAddress().GetModule();
else
sc->module_sp.reset();
}
@@ -375,9 +351,8 @@ Symbol::CalculateSymbolContext (SymbolContext *sc)
ModuleSP
Symbol::CalculateSymbolContextModule ()
{
- const AddressRange *range = GetAddressRangePtr();
- if (range)
- return range->GetBaseAddress().GetModule();
+ if (ValueIsAddress())
+ return GetAddress().GetModule();
return ModuleSP();
}
@@ -392,10 +367,9 @@ void
Symbol::DumpSymbolContext (Stream *s)
{
bool dumped_module = false;
- const AddressRange *range = GetAddressRangePtr();
- if (range)
- {
- ModuleSP module_sp (range->GetBaseAddress().GetModule());
+ if (ValueIsAddress())
+ {
+ ModuleSP module_sp (GetAddress().GetModule());
if (module_sp)
{
dumped_module = true;
@@ -416,10 +390,9 @@ Symbol::GetByteSize () const
if (byte_size == 0 && !m_calculated_size)
{
const_cast<Symbol*>(this)->m_calculated_size = true;
- const AddressRange *range = GetAddressRangePtr();
- if (range)
+ if (ValueIsAddress())
{
- ModuleSP module_sp (range->GetBaseAddress().GetModule());
+ ModuleSP module_sp (GetAddress().GetModule());
if (module_sp)
{
ObjectFile *objfile = module_sp->GetObjectFile();
@@ -428,7 +401,7 @@ Symbol::GetByteSize () const
Symtab *symtab = objfile->GetSymtab();
if (symtab)
{
- const_cast<AddressRange &>(m_addr_range).SetByteSize(symtab->CalculateSymbolSize (const_cast<Symbol *>(this)));
+ const_cast<Symbol*>(this)->SetByteSize (symtab->CalculateSymbolSize (const_cast<Symbol *>(this)));
byte_size = m_addr_range.GetByteSize();
}
}
diff --git a/lldb/source/Symbol/SymbolContext.cpp b/lldb/source/Symbol/SymbolContext.cpp
index 1c764e89ef5..3fff6fbc52c 100644
--- a/lldb/source/Symbol/SymbolContext.cpp
+++ b/lldb/source/Symbol/SymbolContext.cpp
@@ -206,9 +206,9 @@ SymbolContext::DumpStopContext
symbol->GetMangled().GetName().Dump(s);
}
- if (addr.IsValid() && symbol->GetAddressRangePtr())
+ if (addr.IsValid() && symbol->ValueIsAddress())
{
- const addr_t symbol_offset = addr.GetOffset() - symbol->GetAddressRangePtr()->GetBaseAddress().GetOffset();
+ const addr_t symbol_offset = addr.GetOffset() - symbol->GetAddress().GetOffset();
if (symbol_offset)
{
dumped_something = true;
@@ -431,10 +431,10 @@ SymbolContext::GetAddressRange (uint32_t scope,
{
if (range_idx == 0)
{
- const AddressRange *range_ptr = symbol->GetAddressRangePtr();
- if (range_ptr)
+ if (symbol->ValueIsAddress())
{
- range = *range_ptr;
+ range.GetBaseAddress() = symbol->GetAddress();
+ range.SetByteSize (symbol->GetByteSize());
return true;
}
}
@@ -551,7 +551,7 @@ SymbolContext::GetFunctionName (Mangled::NamePreference preference)
}
return function->GetMangled().GetName(preference);
}
- else if (symbol && symbol->GetAddressRangePtr())
+ else if (symbol && symbol->ValueIsAddress())
{
return symbol->GetMangled().GetName(preference);
}
@@ -934,14 +934,13 @@ SymbolContextList::AppendIfUnique (const SymbolContext& sc, bool merge_symbol_in
&& sc.block == NULL
&& sc.line_entry.IsValid() == false)
{
- const AddressRange *symbol_range = sc.symbol->GetAddressRangePtr();
- if (symbol_range)
+ if (sc.symbol->ValueIsAddress())
{
for (pos = m_symbol_contexts.begin(); pos != end; ++pos)
{
if (pos->function)
{
- if (pos->function->GetAddressRange().GetBaseAddress() == symbol_range->GetBaseAddress())
+ if (pos->function->GetAddressRange().GetBaseAddress() == sc.symbol->GetAddress())
{
// Do we already have a function with this symbol?
if (pos->symbol == sc.symbol)
diff --git a/lldb/source/Symbol/Symtab.cpp b/lldb/source/Symbol/Symtab.cpp
index ea4ff608cb5..dd2a04d1ab2 100644
--- a/lldb/source/Symbol/Symtab.cpp
+++ b/lldb/source/Symbol/Symtab.cpp
@@ -442,15 +442,8 @@ namespace {
const std::vector<Symbol>& symbols;
SymbolIndexComparator(const std::vector<Symbol>& s) : symbols(s) { }
bool operator()(uint32_t index_a, uint32_t index_b) {
- addr_t value_a;
- addr_t value_b;
- if (symbols[index_a].GetValue().GetSection() == symbols[index_b].GetValue().GetSection()) {
- value_a = symbols[index_a].GetValue ().GetOffset();
- value_b = symbols[index_b].GetValue ().GetOffset();
- } else {
- value_a = symbols[index_a].GetValue ().GetFileAddress();
- value_b = symbols[index_b].GetValue ().GetFileAddress();
- }
+ addr_t value_a = symbols[index_a].GetAddress().GetFileAddress();
+ addr_t value_b = symbols[index_b].GetAddress().GetFileAddress();
if (value_a == value_b) {
// The if the values are equal, use the original symbol user ID
@@ -741,10 +734,9 @@ SymbolWithFileAddress (SymbolSearchInfo *info, const uint32_t *index_ptr)
// lldb::Symbol::GetAddressRangePtr() will only return a non NULL address
// range if the symbol has a section!
- const AddressRange *curr_range = curr_symbol->GetAddressRangePtr();
- if (curr_range)
+ if (curr_symbol->ValueIsAddress())
{
- const addr_t curr_file_addr = curr_range->GetBaseAddress().GetFileAddress();
+ const addr_t curr_file_addr = curr_symbol->GetAddress().GetFileAddress();
if (info_file_addr < curr_file_addr)
return -1;
if (info_file_addr > curr_file_addr)
@@ -765,10 +757,9 @@ SymbolWithClosestFileAddress (SymbolSearchInfo *info, const uint32_t *index_ptr)
return -1;
const addr_t info_file_addr = info->file_addr;
- const AddressRange *curr_range = symbol->GetAddressRangePtr();
- if (curr_range)
+ if (symbol->ValueIsAddress())
{
- const addr_t curr_file_addr = curr_range->GetBaseAddress().GetFileAddress();
+ const addr_t curr_file_addr = symbol->GetAddress().GetFileAddress();
if (info_file_addr < curr_file_addr)
return -1;
@@ -819,7 +810,7 @@ Symtab::InitAddressIndexes()
const_iterator end = m_symbols.end();
for (const_iterator pos = m_symbols.begin(); pos != end; ++pos)
{
- if (pos->GetAddressRangePtr())
+ if (pos->ValueIsAddress())
m_addr_indexes.push_back (std::distance(begin, pos));
}
#endif
@@ -851,15 +842,18 @@ Symtab::CalculateSymbolSize (Symbol *symbol)
// Else if this is an address based symbol, figure out the delta between
// it and the next address based symbol
- if (symbol->GetAddressRangePtr())
+ if (symbol->ValueIsAddress())
{
if (!m_addr_indexes_computed)
InitAddressIndexes();
const size_t num_addr_indexes = m_addr_indexes.size();
- SymbolSearchInfo info = FindIndexPtrForSymbolContainingAddress(this, symbol->GetAddressRangePtr()->GetBaseAddress().GetFileAddress(), &m_addr_indexes.front(), num_addr_indexes);
+ SymbolSearchInfo info = FindIndexPtrForSymbolContainingAddress (this,
+ symbol->GetAddress().GetFileAddress(),
+ &m_addr_indexes.front(),
+ num_addr_indexes);
if (info.match_index_ptr != NULL)
{
- const lldb::addr_t curr_file_addr = symbol->GetAddressRangePtr()->GetBaseAddress().GetFileAddress();
+ const lldb::addr_t curr_file_addr = symbol->GetAddress().GetFileAddress();
// We can figure out the address range of all symbols except the
// last one by taking the delta between the current symbol and
// the next symbol
@@ -872,12 +866,11 @@ Symtab::CalculateSymbolSize (Symbol *symbol)
if (next_symbol == NULL)
break;
- assert (next_symbol->GetAddressRangePtr());
- const lldb::addr_t next_file_addr = next_symbol->GetAddressRangePtr()->GetBaseAddress().GetFileAddress();
+ const lldb::addr_t next_file_addr = next_symbol->GetAddress().GetFileAddress();
if (next_file_addr > curr_file_addr)
{
byte_size = next_file_addr - curr_file_addr;
- symbol->GetAddressRangePtr()->SetByteSize(byte_size);
+ symbol->SetByteSize(byte_size);
symbol->SetSizeIsSynthesized(true);
break;
}
diff --git a/lldb/source/Target/ThreadPlanStepInRange.cpp b/lldb/source/Target/ThreadPlanStepInRange.cpp
index 9fc3ad6360a..e7d5f8189a7 100644
--- a/lldb/source/Target/ThreadPlanStepInRange.cpp
+++ b/lldb/source/Target/ThreadPlanStepInRange.cpp
@@ -201,7 +201,7 @@ ThreadPlanStepInRange::ShouldStop (Event *event_ptr)
}
else if (sc.symbol)
{
- func_start_address = sc.symbol->GetValue();
+ func_start_address = sc.symbol->GetAddress();
if (curr_addr == func_start_address.GetLoadAddress(m_thread.CalculateTarget().get()))
bytes_to_skip = sc.symbol->GetPrologueByteSize();
}
diff --git a/lldb/source/Target/ThreadPlanStepRange.cpp b/lldb/source/Target/ThreadPlanStepRange.cpp
index e67cf28d17a..b504e1f18db 100644
--- a/lldb/source/Target/ThreadPlanStepRange.cpp
+++ b/lldb/source/Target/ThreadPlanStepRange.cpp
@@ -184,9 +184,10 @@ ThreadPlanStepRange::InSymbol()
{
return m_addr_context.function->GetAddressRange().ContainsLoadAddress (cur_pc, m_thread.CalculateTarget().get());
}
- else if (m_addr_context.symbol != NULL)
+ else if (m_addr_context.symbol)
{
- return m_addr_context.symbol->GetAddressRangeRef().ContainsLoadAddress (cur_pc, m_thread.CalculateTarget().get());
+ AddressRange range(m_addr_context.symbol->GetAddress(), m_addr_context.symbol->GetByteSize());
+ return range.ContainsLoadAddress (cur_pc, m_thread.CalculateTarget().get());
}
return false;
}
OpenPOWER on IntegriCloud