From e9eaf7b430ee69e8ef145884cbc8fa3ef8bd3237 Mon Sep 17 00:00:00 2001 From: Alex Langford Date: Thu, 4 May 2023 18:19:15 -0700 Subject: Re-land "[lldb] Expose a const iterator for SymbolContextList" Re-lands 04aa943be8ed5c03092e2a90112ac638360ec253 with modifications to fix tests. I originally reverted this because it caused a test to fail on Linux. The problem was that I inverted a condition on accident. --- lldb/source/Core/AddressResolverFileLine.cpp | 32 ++++++++++++---------------- 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'lldb/source/Core/AddressResolverFileLine.cpp') diff --git a/lldb/source/Core/AddressResolverFileLine.cpp b/lldb/source/Core/AddressResolverFileLine.cpp index 8152a57644fa..6ab3b8fcee15 100644 --- a/lldb/source/Core/AddressResolverFileLine.cpp +++ b/lldb/source/Core/AddressResolverFileLine.cpp @@ -45,24 +45,20 @@ AddressResolverFileLine::SearchCallback(SearchFilter &filter, // TODO: Handle SourceLocationSpec column information cu->ResolveSymbolContext(m_src_location_spec, eSymbolContextEverything, sc_list); - uint32_t sc_list_size = sc_list.GetSize(); - for (uint32_t i = 0; i < sc_list_size; i++) { - SymbolContext sc; - if (sc_list.GetContextAtIndex(i, sc)) { - Address line_start = sc.line_entry.range.GetBaseAddress(); - addr_t byte_size = sc.line_entry.range.GetByteSize(); - if (line_start.IsValid()) { - AddressRange new_range(line_start, byte_size); - m_address_ranges.push_back(new_range); - } else { - LLDB_LOGF(log, - "error: Unable to resolve address at file address 0x%" PRIx64 - " for %s:%d\n", - line_start.GetFileAddress(), - m_src_location_spec.GetFileSpec().GetFilename().AsCString( - ""), - m_src_location_spec.GetLine().value_or(0)); - } + for (const SymbolContext &sc : sc_list) { + Address line_start = sc.line_entry.range.GetBaseAddress(); + addr_t byte_size = sc.line_entry.range.GetByteSize(); + if (line_start.IsValid()) { + AddressRange new_range(line_start, byte_size); + m_address_ranges.push_back(new_range); + } else { + LLDB_LOGF(log, + "error: Unable to resolve address at file address 0x%" PRIx64 + " for %s:%d\n", + line_start.GetFileAddress(), + m_src_location_spec.GetFileSpec().GetFilename().AsCString( + ""), + m_src_location_spec.GetLine().value_or(0)); } } return Searcher::eCallbackReturnContinue; -- cgit v1.2.3