Author: Jim Ingham Date: 2022-02-14T15:53:24-08:00 New Revision: 793924dd5f2ad0663f77a09f09d11adaa4ce2b91
URL: https://github.com/llvm/llvm-project/commit/793924dd5f2ad0663f77a09f09d11adaa4ce2b91 DIFF: https://github.com/llvm/llvm-project/commit/793924dd5f2ad0663f77a09f09d11adaa4ce2b91.diff LOG: Fix an incorrect assumption in "thread until": code with debug info is not always in a function. Some dyld cross library stubs can have line information but no function. Make sure you check that you have a valid Function object before asking it questions. Differential Revision: https://reviews.llvm.org/D119297 Added: Modified: lldb/source/Commands/CommandObjectThread.cpp Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index 4108adfbec0d..bd491e5e4603 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -1012,7 +1012,14 @@ class CommandObjectThreadUntil : public CommandObjectParsed { uint32_t index_ptr = 0, end_ptr; std::vector<addr_t> address_list; - // Find the beginning & end index of the + // Find the beginning & end index of the function, but first make + // sure it is valid: + if (!sc.function) { + result.AppendErrorWithFormat("Have debug information but no " + "function info - can't get until range."); + return false; + } + AddressRange fun_addr_range = sc.function->GetAddressRange(); Address fun_start_addr = fun_addr_range.GetBaseAddress(); line_table->FindLineEntryByAddress(fun_start_addr, function_start, _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits