https://github.com/labath created https://github.com/llvm/llvm-project/pull/115836
Many calls to Function::GetAddressRange() were not interested in the range itself. Instead they wanted to find the address of the function (its entry point) or the base address for relocation of function-scoped entities (technically, the two don't need to be the same, but there's isn't good reason for them not to be). This PR creates a separate function for retrieving this, and changes the existing (non-controversial) uses to call that instead. >From cfca5f7b06c26e35c5884542b52b1fe6d28f59ea Mon Sep 17 00:00:00 2001 From: Pavel Labath <pa...@labath.sk> Date: Tue, 12 Nov 2024 10:17:42 +0100 Subject: [PATCH] [lldb] Add Function::GetAddress and redirect some uses Many calls to Function::GetAddressRange() were not interested in the range itself. Instead they wanted to find the address of the function (its entry point) or the base address for relocation of function-scoped entities. This PR creates a separate function for retrieving this, and changes the existing (non-controversial) uses to call that instead. --- lldb/include/lldb/Symbol/Function.h | 5 +++++ lldb/source/API/SBBlock.cpp | 3 +-- lldb/source/API/SBFunction.cpp | 3 +-- lldb/source/Breakpoint/BreakpointResolver.cpp | 2 +- .../Breakpoint/BreakpointResolverName.cpp | 2 +- lldb/source/Core/SearchFilter.cpp | 2 +- .../source/Expression/DWARFExpressionList.cpp | 3 +-- lldb/source/Expression/IRExecutionUnit.cpp | 3 +-- .../Architecture/Mips/ArchitectureMips.cpp | 2 +- .../MacOSX-DYLD/DynamicLoaderDarwin.cpp | 6 ++---- .../POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp | 3 +-- .../Clang/ClangExpressionDeclMap.cpp | 2 +- .../Breakpad/SymbolFileBreakpad.cpp | 4 ++-- .../DWARF/SymbolFileDWARFDebugMap.cpp | 3 +-- .../NativePDB/SymbolFileNativePDB.cpp | 12 ++++-------- lldb/source/Symbol/Block.cpp | 14 ++++++-------- lldb/source/Symbol/Function.cpp | 19 +++++++++++++------ lldb/source/Symbol/SymbolContext.cpp | 10 +++------- lldb/source/Symbol/Variable.cpp | 8 +++----- lldb/source/Target/StackFrame.cpp | 3 +-- lldb/source/Target/ThreadPlanStepInRange.cpp | 2 +- .../ValueObject/ValueObjectVariable.cpp | 3 +-- 22 files changed, 52 insertions(+), 62 deletions(-) diff --git a/lldb/include/lldb/Symbol/Function.h b/lldb/include/lldb/Symbol/Function.h index bbfc25fe74ea06..dd4226f300c377 100644 --- a/lldb/include/lldb/Symbol/Function.h +++ b/lldb/include/lldb/Symbol/Function.h @@ -446,6 +446,11 @@ class Function : public UserID, public SymbolContextScope { const AddressRange &GetAddressRange() { return m_range; } + /// Return the address of the function (its entry point). This address is also + /// used as a base address for relocation of function-scope entities (blocks + /// and variables). + Address GetAddress() const; + lldb::LanguageType GetLanguage() const; /// Find the file and line number of the source location of the start of the /// function. This will use the declaration if present and fall back on the diff --git a/lldb/source/API/SBBlock.cpp b/lldb/source/API/SBBlock.cpp index b921ccd9802454..2ef4cc7227cf95 100644 --- a/lldb/source/API/SBBlock.cpp +++ b/lldb/source/API/SBBlock.cpp @@ -176,8 +176,7 @@ bool SBBlock::GetDescription(SBStream &description) { m_opaque_ptr->CalculateSymbolContext(&sc); if (sc.function) { m_opaque_ptr->DumpAddressRanges( - &strm, - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress()); + &strm, sc.function->GetAddress().GetFileAddress()); } } else strm.PutCString("No value"); diff --git a/lldb/source/API/SBFunction.cpp b/lldb/source/API/SBFunction.cpp index ac61220ec8736a..91f5e243af4144 100644 --- a/lldb/source/API/SBFunction.cpp +++ b/lldb/source/API/SBFunction.cpp @@ -119,8 +119,7 @@ SBInstructionList SBFunction::GetInstructions(SBTarget target, if (m_opaque_ptr) { TargetSP target_sp(target.GetSP()); std::unique_lock<std::recursive_mutex> lock; - ModuleSP module_sp( - m_opaque_ptr->GetAddressRange().GetBaseAddress().GetModule()); + ModuleSP module_sp(m_opaque_ptr->GetAddress().GetModule()); if (target_sp && module_sp) { lock = std::unique_lock<std::recursive_mutex>(target_sp->GetAPIMutex()); const bool force_live_memory = true; diff --git a/lldb/source/Breakpoint/BreakpointResolver.cpp b/lldb/source/Breakpoint/BreakpointResolver.cpp index 9643602d78c751..5fe544908c39e2 100644 --- a/lldb/source/Breakpoint/BreakpointResolver.cpp +++ b/lldb/source/Breakpoint/BreakpointResolver.cpp @@ -325,7 +325,7 @@ void BreakpointResolver::AddLocation(SearchFilter &filter, // If the line number is before the prologue end, move it there... bool skipped_prologue = false; if (skip_prologue && sc.function) { - Address prologue_addr(sc.function->GetAddressRange().GetBaseAddress()); + Address prologue_addr = sc.function->GetAddress(); if (prologue_addr.IsValid() && (line_start == prologue_addr)) { const uint32_t prologue_byte_size = sc.function->GetPrologueByteSize(); if (prologue_byte_size) { diff --git a/lldb/source/Breakpoint/BreakpointResolverName.cpp b/lldb/source/Breakpoint/BreakpointResolverName.cpp index 264638eb836dc6..b9c8a1635d8440 100644 --- a/lldb/source/Breakpoint/BreakpointResolverName.cpp +++ b/lldb/source/Breakpoint/BreakpointResolverName.cpp @@ -339,7 +339,7 @@ BreakpointResolverName::SearchCallback(SearchFilter &filter, if (!sc.block->GetStartAddress(break_addr)) break_addr.Clear(); } else if (sc.function) { - break_addr = sc.function->GetAddressRange().GetBaseAddress(); + break_addr = sc.function->GetAddress(); if (m_skip_prologue && break_addr.IsValid()) { const uint32_t prologue_byte_size = sc.function->GetPrologueByteSize(); if (prologue_byte_size) diff --git a/lldb/source/Core/SearchFilter.cpp b/lldb/source/Core/SearchFilter.cpp index 8027a62414bac0..6cd00af64870ae 100644 --- a/lldb/source/Core/SearchFilter.cpp +++ b/lldb/source/Core/SearchFilter.cpp @@ -152,7 +152,7 @@ bool SearchFilter::FunctionPasses(Function &function) { // This is a slightly cheesy job, but since we don't have finer grained // filters yet, just checking that the start address passes is probably // good enough for the base class behavior. - Address addr = function.GetAddressRange().GetBaseAddress(); + Address addr = function.GetAddress(); return AddressPasses(addr); } diff --git a/lldb/source/Expression/DWARFExpressionList.cpp b/lldb/source/Expression/DWARFExpressionList.cpp index 7a5cf9f9a0be46..be6c0a151159dc 100644 --- a/lldb/source/Expression/DWARFExpressionList.cpp +++ b/lldb/source/Expression/DWARFExpressionList.cpp @@ -126,8 +126,7 @@ bool DWARFExpressionList::MatchesOperand( if (!sc.function) return false; - addr_t load_function_start = - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); + addr_t load_function_start = sc.function->GetAddress().GetFileAddress(); if (load_function_start == LLDB_INVALID_ADDRESS) return false; diff --git a/lldb/source/Expression/IRExecutionUnit.cpp b/lldb/source/Expression/IRExecutionUnit.cpp index 9158b43b1c5c0d..c8b4ddf705ec48 100644 --- a/lldb/source/Expression/IRExecutionUnit.cpp +++ b/lldb/source/Expression/IRExecutionUnit.cpp @@ -731,8 +731,7 @@ class LoadAddressResolver { // If that didn't work, try the function. if (load_address == LLDB_INVALID_ADDRESS && candidate_sc.function) { - Address addr = - candidate_sc.function->GetAddressRange().GetBaseAddress(); + Address addr = candidate_sc.function->GetAddress(); load_address = m_target->GetProcessSP() ? addr.GetLoadAddress(m_target) : addr.GetFileAddress(); } diff --git a/lldb/source/Plugins/Architecture/Mips/ArchitectureMips.cpp b/lldb/source/Plugins/Architecture/Mips/ArchitectureMips.cpp index 27ba10524141ed..5aa903443c760c 100644 --- a/lldb/source/Plugins/Architecture/Mips/ArchitectureMips.cpp +++ b/lldb/source/Plugins/Architecture/Mips/ArchitectureMips.cpp @@ -97,7 +97,7 @@ lldb::addr_t ArchitectureMips::GetBreakableLoadAddress(lldb::addr_t addr, resolve_scope, sc); Address sym_addr; if (sc.function) - sym_addr = sc.function->GetAddressRange().GetBaseAddress(); + sym_addr = sc.function->GetAddress(); else if (sc.symbol) sym_addr = sc.symbol->GetAddress(); diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp index 3659dfcd3c4ca3..8949b14c571893 100644 --- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp +++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp @@ -796,10 +796,8 @@ bool DynamicLoaderDarwin::AlwaysRelyOnEHUnwindInfo(SymbolContext &sym_ctx) { if (sym_ctx.symbol) { module_sp = sym_ctx.symbol->GetAddressRef().GetModule(); } - if (module_sp.get() == nullptr && sym_ctx.function) { - module_sp = - sym_ctx.function->GetAddressRange().GetBaseAddress().GetModule(); - } + if (module_sp.get() == nullptr && sym_ctx.function) + module_sp = sym_ctx.function->GetAddress().GetModule(); if (module_sp.get() == nullptr) return false; diff --git a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp index 34aca50df0ac4b..5614bc32468d5c 100644 --- a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp +++ b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp @@ -856,8 +856,7 @@ bool DynamicLoaderPOSIXDYLD::AlwaysRelyOnEHUnwindInfo( if (sym_ctx.symbol) module_sp = sym_ctx.symbol->GetAddressRef().GetModule(); if (!module_sp && sym_ctx.function) - module_sp = - sym_ctx.function->GetAddressRange().GetBaseAddress().GetModule(); + module_sp = sym_ctx.function->GetAddress().GetModule(); if (!module_sp) return false; diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp index bbe401b827f17d..9e96f6557c7baf 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp @@ -1883,7 +1883,7 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context, return; } - fun_address = function->GetAddressRange().GetBaseAddress(); + fun_address = function->GetAddress(); CompilerType copied_function_type = GuardedCopyType(function_clang_type); if (copied_function_type) { diff --git a/lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp b/lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp index fadc19676609bf..7e14e0477ee21c 100644 --- a/lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp +++ b/lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp @@ -304,7 +304,7 @@ size_t SymbolFileBreakpad::ParseBlocksRecursive(Function &func) { blocks.push_back(&block); size_t blocks_added = 0; - addr_t func_base = func.GetAddressRange().GetBaseAddress().GetOffset(); + addr_t func_base = func.GetAddress().GetOffset(); CompUnitData &data = m_cu_data->GetEntryRef(comp_unit->GetID()).data; LineIterator It(*m_objfile_sp, Record::Func, data.bookmark), End(*m_objfile_sp); @@ -398,7 +398,7 @@ SymbolFileBreakpad::ResolveSymbolContext(const Address &so_addr, Block &block = func_sp->GetBlock(true); sc.block = block.FindInnermostBlockByOffset( so_addr.GetFileAddress() - - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress()); + sc.function->GetAddress().GetFileAddress()); if (sc.block) result |= eSymbolContextBlock; } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp index 08ea4c6d1645ad..71501881d4d86d 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp @@ -1062,8 +1062,7 @@ static void RemoveFunctionsWithModuleNotEqualTo(const ModuleSP &module_sp, SymbolContext sc; sc_list.GetContextAtIndex(i, sc); if (sc.function) { - const SectionSP section_sp( - sc.function->GetAddressRange().GetBaseAddress().GetSection()); + const SectionSP section_sp = sc.function->GetAddress().GetSection(); if (section_sp->GetModule() != module_sp) { sc_list.RemoveContextAtIndex(i); continue; diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp index c0416b4d06815d..9f1470418660e0 100644 --- a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp +++ b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp @@ -421,8 +421,7 @@ Block &SymbolFileNativePDB::CreateBlock(PdbCompilandSymId block_id) { lldbassert(func); lldb::addr_t block_base = m_index->MakeVirtualAddress(block.Segment, block.CodeOffset); - lldb::addr_t func_base = - func->GetAddressRange().GetBaseAddress().GetFileAddress(); + lldb::addr_t func_base = func->GetAddress().GetFileAddress(); if (block_base >= func_base) child_block->AddRange(Block::Range(block_base - func_base, block.CodeSize)); else { @@ -1116,8 +1115,7 @@ uint32_t SymbolFileNativePDB::ResolveSymbolContext( sc.function = GetOrCreateFunction(csid, *sc.comp_unit).get(); if (sc.function) { Block &block = sc.function->GetBlock(true); - addr_t func_base = - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); + addr_t func_base = sc.function->GetAddress().GetFileAddress(); addr_t offset = file_addr - func_base; sc.block = block.FindInnermostBlockByOffset(offset); } @@ -1128,8 +1126,7 @@ uint32_t SymbolFileNativePDB::ResolveSymbolContext( sc.function = block.CalculateSymbolContextFunction(); if (sc.function) { sc.function->GetBlock(true); - addr_t func_base = - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); + addr_t func_base = sc.function->GetAddress().GetFileAddress(); addr_t offset = file_addr - func_base; sc.block = block.FindInnermostBlockByOffset(offset); } @@ -1854,8 +1851,7 @@ VariableSP SymbolFileNativePDB::CreateLocalVariable(PdbCompilandSymId scope_id, // when lookuping local variables in this scope. if (!var_info.location.IsValid()) var_info.location = DWARFExpressionList(module, DWARFExpression(), nullptr); - var_info.location.SetFuncFileAddress( - func->GetAddressRange().GetBaseAddress().GetFileAddress()); + var_info.location.SetFuncFileAddress(func->GetAddress().GetFileAddress()); CompilandIndexItem *cii = m_index->compilands().GetCompiland(var_id.modi); CompUnitSP comp_unit_sp = GetOrCreateCompileUnit(*cii); TypeSP type_sp = GetOrCreateType(var_info.type); diff --git a/lldb/source/Symbol/Block.cpp b/lldb/source/Symbol/Block.cpp index 5c7772a6db780d..85d0aeca968e7b 100644 --- a/lldb/source/Symbol/Block.cpp +++ b/lldb/source/Symbol/Block.cpp @@ -37,10 +37,9 @@ void Block::GetDescription(Stream *s, Function *function, addr_t base_addr = LLDB_INVALID_ADDRESS; if (target) - base_addr = - function->GetAddressRange().GetBaseAddress().GetLoadAddress(target); + base_addr = function->GetAddress().GetLoadAddress(target); if (base_addr == LLDB_INVALID_ADDRESS) - base_addr = function->GetAddressRange().GetBaseAddress().GetFileAddress(); + base_addr = function->GetAddress().GetFileAddress(); s->Printf(", range%s = ", num_ranges > 1 ? "s" : ""); for (size_t i = 0; i < num_ranges; ++i) { @@ -305,7 +304,7 @@ bool Block::GetRangeAtIndex(uint32_t range_idx, AddressRange &range) { Function *function = CalculateSymbolContextFunction(); if (function) { const Range &vm_range = m_ranges.GetEntryRef(range_idx); - range.GetBaseAddress() = function->GetAddressRange().GetBaseAddress(); + range.GetBaseAddress() = function->GetAddress(); range.GetBaseAddress().Slide(vm_range.GetRangeBase()); range.SetByteSize(vm_range.GetByteSize()); return true; @@ -323,7 +322,7 @@ AddressRanges Block::GetRanges() { ranges.emplace_back(); auto &range = ranges.back(); const Range &vm_range = m_ranges.GetEntryRef(i); - range.GetBaseAddress() = function->GetAddressRange().GetBaseAddress(); + range.GetBaseAddress() = function->GetAddress(); range.GetBaseAddress().Slide(vm_range.GetRangeBase()); range.SetByteSize(vm_range.GetByteSize()); } @@ -336,7 +335,7 @@ bool Block::GetStartAddress(Address &addr) { Function *function = CalculateSymbolContextFunction(); if (function) { - addr = function->GetAddressRange().GetBaseAddress(); + addr = function->GetAddress(); addr.Slide(m_ranges.GetEntryRef(0).GetRangeBase()); return true; } @@ -355,8 +354,7 @@ void Block::AddRange(const Range &range) { if (log) { ModuleSP module_sp(m_parent_scope->CalculateSymbolContextModule()); Function *function = m_parent_scope->CalculateSymbolContextFunction(); - const addr_t function_file_addr = - function->GetAddressRange().GetBaseAddress().GetFileAddress(); + const addr_t function_file_addr = function->GetAddress().GetFileAddress(); const addr_t block_start_addr = function_file_addr + range.GetRangeBase(); const addr_t block_end_addr = function_file_addr + range.GetRangeEnd(); Type *func_type = function->GetType(); diff --git a/lldb/source/Symbol/Function.cpp b/lldb/source/Symbol/Function.cpp index f590cf4632bce0..cd5728b8180f23 100644 --- a/lldb/source/Symbol/Function.cpp +++ b/lldb/source/Symbol/Function.cpp @@ -133,7 +133,7 @@ lldb::addr_t CallEdge::GetLoadAddress(lldb::addr_t unresolved_pc, Function &caller, Target &target) { Log *log = GetLog(LLDBLog::Step); - const Address &caller_start_addr = caller.GetAddressRange().GetBaseAddress(); + const Address &caller_start_addr = caller.GetAddress(); ModuleSP caller_module_sp = caller_start_addr.GetModule(); if (!caller_module_sp) { @@ -307,8 +307,7 @@ void Function::GetStartLineSourceInfo(FileSpec &source_file, return; LineEntry line_entry; - if (line_table->FindLineEntryByAddress(GetAddressRange().GetBaseAddress(), - line_entry, nullptr)) { + if (line_table->FindLineEntryByAddress(GetAddress(), line_entry, nullptr)) { line_no = line_entry.line; source_file = line_entry.GetFile(); } @@ -407,6 +406,15 @@ CompileUnit *Function::GetCompileUnit() { return m_comp_unit; } const CompileUnit *Function::GetCompileUnit() const { return m_comp_unit; } +Address Function::GetAddress() const { + if (m_ranges.empty()) + return Address(); + // We're using a (DWARF-like) convention where the base address of the first + // interval denotes the entry point of the function. If that turns out to be + // insufficient, we can introduce a separate "entry point address" field. + return m_ranges[0].GetBaseAddress(); +} + void Function::GetDescription(Stream *s, lldb::DescriptionLevel level, Target *target) { ConstString name = GetName(); @@ -476,7 +484,7 @@ Function *Function::CalculateSymbolContextFunction() { return this; } lldb::DisassemblerSP Function::GetInstructions(const ExecutionContext &exe_ctx, const char *flavor, bool prefer_file_cache) { - ModuleSP module_sp(GetAddressRange().GetBaseAddress().GetModule()); + ModuleSP module_sp = GetAddress().GetModule(); if (module_sp && exe_ctx.HasTargetScope()) { return Disassembler::DisassembleRange( module_sp->GetArchitecture(), nullptr, nullptr, nullptr, flavor, @@ -593,8 +601,7 @@ uint32_t Function::GetPrologueByteSize() { if (line_table) { LineEntry first_line_entry; uint32_t first_line_entry_idx = UINT32_MAX; - if (line_table->FindLineEntryByAddress(GetAddressRange().GetBaseAddress(), - first_line_entry, + if (line_table->FindLineEntryByAddress(GetAddress(), first_line_entry, &first_line_entry_idx)) { // Make sure the first line entry isn't already the end of the prologue addr_t prologue_end_file_addr = LLDB_INVALID_ADDRESS; diff --git a/lldb/source/Symbol/SymbolContext.cpp b/lldb/source/Symbol/SymbolContext.cpp index de083e81206e2a..76a4c3d6b04e97 100644 --- a/lldb/source/Symbol/SymbolContext.cpp +++ b/lldb/source/Symbol/SymbolContext.cpp @@ -104,8 +104,7 @@ bool SymbolContext::DumpStopContext( if (addr.IsValid()) { const addr_t function_offset = - addr.GetOffset() - - function->GetAddressRange().GetBaseAddress().GetOffset(); + addr.GetOffset() - function->GetAddress().GetOffset(); if (!show_function_name) { // Print +offset even if offset is 0 dumped_something = true; @@ -698,9 +697,7 @@ LineEntry SymbolContext::GetFunctionStartLineEntry() const { } if (function) { - if (function->GetAddressRange() - .GetBaseAddress() - .CalculateSymbolContextLineEntry(line_entry)) + if (function->GetAddress().CalculateSymbolContextLineEntry(line_entry)) return line_entry; } return LineEntry(); @@ -1226,8 +1223,7 @@ bool SymbolContextList::AppendIfUnique(const SymbolContext &sc, continue; if (pos->function) { - if (pos->function->GetAddressRange().GetBaseAddress() == - sc.symbol->GetAddressRef()) { + if (pos->function->GetAddress() == sc.symbol->GetAddressRef()) { // Do we already have a function with this symbol? if (pos->symbol == sc.symbol) return false; diff --git a/lldb/source/Symbol/Variable.cpp b/lldb/source/Symbol/Variable.cpp index a63e4f973537fa..8244725aba545a 100644 --- a/lldb/source/Symbol/Variable.cpp +++ b/lldb/source/Symbol/Variable.cpp @@ -221,8 +221,7 @@ bool Variable::LocationIsValidForFrame(StackFrame *frame) { TargetSP target_sp(frame->CalculateTarget()); addr_t loclist_base_load_addr = - function->GetAddressRange().GetBaseAddress().GetLoadAddress( - target_sp.get()); + function->GetAddress().GetLoadAddress(target_sp.get()); if (loclist_base_load_addr == LLDB_INVALID_ADDRESS) return false; // It is a location list. We just need to tell if the location list @@ -259,7 +258,7 @@ bool Variable::LocationIsValidForAddress(const Address &address) { if (sc.function) { addr_t loclist_base_file_addr = - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); + sc.function->GetAddress().GetFileAddress(); if (loclist_base_file_addr == LLDB_INVALID_ADDRESS) return false; // It is a location list. We just need to tell if the location list @@ -450,8 +449,7 @@ bool Variable::DumpLocations(Stream *s, const Address &address) { const addr_t file_addr = address.GetFileAddress(); if (sc.function) { - addr_t loclist_base_file_addr = - sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); + addr_t loclist_base_file_addr = sc.function->GetAddress().GetFileAddress(); if (loclist_base_file_addr == LLDB_INVALID_ADDRESS) return false; return m_location_list.DumpLocations(s, eDescriptionLevelBrief, diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp index ef71fc6acb1703..85db2831682008 100644 --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -1097,8 +1097,7 @@ llvm::Error StackFrame::GetFrameBaseValue(Scalar &frame_base) { addr_t loclist_base_addr = LLDB_INVALID_ADDRESS; if (!m_sc.function->GetFrameBaseExpression().IsAlwaysValidSingleExpr()) loclist_base_addr = - m_sc.function->GetAddressRange().GetBaseAddress().GetLoadAddress( - exe_ctx.GetTargetPtr()); + m_sc.function->GetAddress().GetLoadAddress(exe_ctx.GetTargetPtr()); llvm::Expected<Value> expr_value = m_sc.function->GetFrameBaseExpression().Evaluate( diff --git a/lldb/source/Target/ThreadPlanStepInRange.cpp b/lldb/source/Target/ThreadPlanStepInRange.cpp index 224a17d896ccf0..4a2ede8b39728f 100644 --- a/lldb/source/Target/ThreadPlanStepInRange.cpp +++ b/lldb/source/Target/ThreadPlanStepInRange.cpp @@ -250,7 +250,7 @@ bool ThreadPlanStepInRange::ShouldStop(Event *event_ptr) { eSymbolContextSymbol); if (sc.function) { - func_start_address = sc.function->GetAddressRange().GetBaseAddress(); + func_start_address = sc.function->GetAddress(); if (curr_addr == func_start_address.GetLoadAddress(&GetTarget())) bytes_to_skip = sc.function->GetPrologueByteSize(); } else if (sc.symbol) { diff --git a/lldb/source/ValueObject/ValueObjectVariable.cpp b/lldb/source/ValueObject/ValueObjectVariable.cpp index db664ce9a7a20e..6a482b91ad4bec 100644 --- a/lldb/source/ValueObject/ValueObjectVariable.cpp +++ b/lldb/source/ValueObject/ValueObjectVariable.cpp @@ -160,8 +160,7 @@ bool ValueObjectVariable::UpdateValue() { variable->CalculateSymbolContext(&sc); if (sc.function) loclist_base_load_addr = - sc.function->GetAddressRange().GetBaseAddress().GetLoadAddress( - target); + sc.function->GetAddress().GetLoadAddress(target); } Value old_value(m_value); llvm::Expected<Value> maybe_value = expr_list.Evaluate( _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits