[Lldb-commits] [lldb] r292598 - Fix more unused variable warnings when asserts are disabled.
Author: abidh Date: Fri Jan 20 04:24:03 2017 New Revision: 292598 URL: http://llvm.org/viewvc/llvm-project?rev=292598&view=rev Log: Fix more unused variable warnings when asserts are disabled. Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp lldb/trunk/source/Symbol/LineTable.cpp Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp?rev=292598&r1=292597&r2=292598&view=diff == --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Fri Jan 20 04:24:03 2017 @@ -895,6 +895,7 @@ UtilityFunction *AppleObjCRuntimeV2::Cre } assert(len < (int)sizeof(check_function_code)); + UNUSED_IF_ASSERT_DISABLED(len); Error error; return GetTargetRef().GetUtilityFunctionForLanguage( Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=292598&r1=292597&r2=292598&view=diff == --- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Fri Jan 20 04:24:03 2017 @@ -632,6 +632,7 @@ size_t ObjectFileELF::GetModuleSpecifica // SetArchitecture should have set the vendor to unknown vendor = spec.GetArchitecture().GetTriple().getVendor(); assert(vendor == llvm::Triple::UnknownVendor); + UNUSED_IF_ASSERT_DISABLED(vendor); // // Validate it is ok to remove GetOsFromOSABI @@ -1524,6 +1525,7 @@ size_t ObjectFileELF::GetSectionHeaderIn GetOsFromOSABI(header.e_ident[EI_OSABI], ostype); spec_ostype = arch_spec.GetTriple().getOS(); assert(spec_ostype == ostype); +UNUSED_IF_ASSERT_DISABLED(spec_ostype); } if (arch_spec.GetMachine() == llvm::Triple::mips || Modified: lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp?rev=292598&r1=292597&r2=292598&view=diff == --- lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp (original) +++ lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp Fri Jan 20 04:24:03 2017 @@ -1532,6 +1532,7 @@ Error NativeProcessLinux::GetMemoryRegio assert((proc_entry_info.GetRange().GetRangeBase() >= prev_base_address) && "descending /proc/pid/maps entries detected, unexpected"); prev_base_address = proc_entry_info.GetRange().GetRangeBase(); +UNUSED_IF_ASSERT_DISABLED(prev_base_address); // If the target address comes before this entry, indicate distance to next // region. Modified: lldb/trunk/source/Symbol/LineTable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/LineTable.cpp?rev=292598&r1=292597&r2=292598&view=diff == --- lldb/trunk/source/Symbol/LineTable.cpp (original) +++ lldb/trunk/source/Symbol/LineTable.cpp Fri Jan 20 04:24:03 2017 @@ -501,6 +501,7 @@ LineTable *LineTable::LinkLineTable(cons if (terminate_previous_entry && !sequence.m_entries.empty()) { assert(prev_file_addr != LLDB_INVALID_ADDRESS); + UNUSED_IF_ASSERT_DISABLED(prev_file_addr); sequence.m_entries.push_back(sequence.m_entries.back()); if (prev_end_entry_linked_file_addr == LLDB_INVALID_ADDRESS) prev_end_entry_linked_file_addr = ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28944: Provide option to set pc of the file loaded in memory.
abidh created this revision. This commit adds an option to set PC to the entry point of the file loaded using "target module load" command. In https://reviews.llvm.org/D28804, Greg asked me to separate this part under a different option. https://reviews.llvm.org/D28944 Files: include/lldb/Core/Module.h include/lldb/Symbol/ObjectFile.h source/Commands/CommandObjectTarget.cpp source/Core/Module.cpp source/Symbol/ObjectFile.cpp Index: source/Symbol/ObjectFile.cpp === --- source/Symbol/ObjectFile.cpp +++ source/Symbol/ObjectFile.cpp @@ -652,7 +652,7 @@ return ConstString(ss.GetString()); } -Error ObjectFile::LoadInMemory(Target &target) { +Error ObjectFile::LoadInMemory(Target &target, bool set_pc) { Error error; ProcessSP process = target.CalculateProcess(); if (!process) @@ -677,5 +677,13 @@ return error; } } + if (set_pc) { +ThreadList &thread_list = process->GetThreadList(); +ThreadSP curr_thread(thread_list.GetSelectedThread()); +RegisterContextSP reg_context(curr_thread->GetRegisterContext()); +Address file_entry = GetEntryPointAddress(); +if (file_entry.IsValid()) + reg_context->SetPC(file_entry.GetLoadAddress(&target)); + } return error; } Index: source/Core/Module.cpp === --- source/Core/Module.cpp +++ source/Core/Module.cpp @@ -1665,6 +1665,6 @@ return false; } -Error Module::LoadInMemory(Target &target) { - return m_objfile_sp->LoadInMemory(target); +Error Module::LoadInMemory(Target &target, bool set_pc) { + return m_objfile_sp->LoadInMemory(target, set_pc); } Index: source/Commands/CommandObjectTarget.cpp === --- source/Commands/CommandObjectTarget.cpp +++ source/Commands/CommandObjectTarget.cpp @@ -2568,16 +2568,20 @@ m_file_option(LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeName, "Fullpath or basename for module to load.", ""), m_load_option(LLDB_OPT_SET_1, false, "load", 'l', - "Write file contents to the memory.", - false, true), + "Write file contents to the memory.", false, true), +m_pc_option(LLDB_OPT_SET_1, false, "--set-pc-to-entry", 'p', +"Set PC to the entry point." +" Only applicable with '--load' option.", +false, true), m_slide_option(LLDB_OPT_SET_1, false, "slide", 's', 0, eArgTypeOffset, "Set the load address for all sections to be the " "virtual address in the file plus the offset.", 0) { m_option_group.Append(&m_uuid_option_group, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_file_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_load_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); +m_option_group.Append(&m_pc_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Append(&m_slide_option, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1); m_option_group.Finalize(); } @@ -2590,6 +2594,7 @@ bool DoExecute(Args &args, CommandReturnObject &result) override { Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); const bool load = m_load_option.GetOptionValue().GetCurrentValue(); +const bool set_pc = m_pc_option.GetOptionValue().GetCurrentValue(); if (target == nullptr) { result.AppendError("invalid target, create a debug target using the " "'target create' command"); @@ -2742,7 +2747,7 @@ process->Flush(); } if (load) { - Error error = module->LoadInMemory(*target); + Error error = module->LoadInMemory(*target, set_pc); if (error.Fail()) { result.AppendError(error.AsCString()); return false; @@ -2811,6 +2816,7 @@ OptionGroupUUID m_uuid_option_group; OptionGroupString m_file_option; OptionGroupBoolean m_load_option; + OptionGroupBoolean m_pc_option; OptionGroupUInt64 m_slide_option; }; Index: include/lldb/Symbol/ObjectFile.h === --- include/lldb/Symbol/ObjectFile.h +++ include/lldb/Symbol/ObjectFile.h @@ -786,7 +786,7 @@ /// /// @return //-- - virtual Error LoadInMemory(Target &target); + virtual Error LoadInMemory(Target &target, bool set_pc); protected: //-- Index: include/lldb/Core/Module.h === --- include/lldb/Core/Module.h +++ include/lldb/Core/Module.h @@ -974,7 +974,7 @@ ///
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
boris.ulasevich created this revision. boris.ulasevich added a project: LLDB. Here is a fix for Ubuntu tests fails after the recent change https://reviews.llvm.org/D26497 (https://reviews.llvm.org/D26497). The cause of those fails is in internal call to mmap fuction which destroys completed_plan_stack content which in its turn leads to incorrect stop reason discovering. The solution is to save/restore completed_plan_stack along with existing ThreadStateCheckpoint functionality. Repository: rL LLVM https://reviews.llvm.org/D28945 Files: lldb/include/lldb/Target/Thread.h lldb/source/Target/Thread.cpp Index: lldb/source/Target/Thread.cpp === --- lldb/source/Target/Thread.cpp +++ lldb/source/Target/Thread.cpp @@ -540,6 +540,7 @@ if (process_sp) saved_state.orig_stop_id = process_sp->GetStopID(); saved_state.current_inlined_depth = GetCurrentInlinedDepth(); + saved_state.m_completed_plan_stack = m_completed_plan_stack; return true; } @@ -573,6 +574,7 @@ SetStopInfo(saved_state.stop_info_sp); GetStackFrameList()->SetCurrentInlinedDepth( saved_state.current_inlined_depth); + m_completed_plan_stack = saved_state.m_completed_plan_stack; return true; } Index: lldb/include/lldb/Target/Thread.h === --- lldb/include/lldb/Target/Thread.h +++ lldb/include/lldb/Target/Thread.h @@ -126,6 +126,7 @@ // bit of data. lldb::StopInfoSP stop_info_sp; // You have to restore the stop info or you // might continue with the wrong signals. +std::vector m_completed_plan_stack; lldb::RegisterCheckpointSP register_backup_sp; // You need to restore the registers, of course... uint32_t current_inlined_depth; Index: lldb/source/Target/Thread.cpp === --- lldb/source/Target/Thread.cpp +++ lldb/source/Target/Thread.cpp @@ -540,6 +540,7 @@ if (process_sp) saved_state.orig_stop_id = process_sp->GetStopID(); saved_state.current_inlined_depth = GetCurrentInlinedDepth(); + saved_state.m_completed_plan_stack = m_completed_plan_stack; return true; } @@ -573,6 +574,7 @@ SetStopInfo(saved_state.stop_info_sp); GetStackFrameList()->SetCurrentInlinedDepth( saved_state.current_inlined_depth); + m_completed_plan_stack = saved_state.m_completed_plan_stack; return true; } Index: lldb/include/lldb/Target/Thread.h === --- lldb/include/lldb/Target/Thread.h +++ lldb/include/lldb/Target/Thread.h @@ -126,6 +126,7 @@ // bit of data. lldb::StopInfoSP stop_info_sp; // You have to restore the stop info or you // might continue with the wrong signals. +std::vector m_completed_plan_stack; lldb::RegisterCheckpointSP register_backup_sp; // You need to restore the registers, of course... uint32_t current_inlined_depth; ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
labath added a reviewer: jingham. labath added a comment. Jim should probably review this change. That said, I don't see any failures on linux currently. Can you elaborate on which tests are failing and why? It sounds like there is an opportunity here to write a more robust test... Repository: rL LLVM https://reviews.llvm.org/D28945 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r292611 - Prevent client from querying each thread's PC at each stop.
Author: labath Date: Fri Jan 20 08:17:16 2017 New Revision: 292611 URL: http://llvm.org/viewvc/llvm-project?rev=292611&view=rev Log: Prevent client from querying each thread's PC at each stop. Summary: The server was no longer sending the thread PCs the way the client expected them. I changed the server to send them back as a threadstop info field, similar to the Apple version of the server. I also changed the client to look for them there, before querying the server. I added a test to ensure the server doesn't stop sending them. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D28880 Author: Jason Majors Modified: lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h Modified: lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py?rev=292611&r1=292610&r2=292611&view=diff == --- lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py Fri Jan 20 08:17:16 2017 @@ -1,11 +1,13 @@ from __future__ import print_function +import json +import re + import gdbremote_testcase from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil - class TestGdbRemoteThreadsInStopReply( gdbremote_testcase.GdbRemoteTestCaseBase): @@ -16,7 +18,8 @@ class TestGdbRemoteThreadsInStopReply( "send packet: $OK#00", ] -def gather_stop_reply_threads(self, post_startup_log_lines, thread_count): +def gather_stop_reply_fields(self, post_startup_log_lines, thread_count, +field_names): # Set up the inferior args. inferior_args = [] for i in range(thread_count - 1): @@ -25,6 +28,9 @@ class TestGdbRemoteThreadsInStopReply( procs = self.prep_debug_monitor_and_inferior( inferior_args=inferior_args) +self.add_register_info_collection_packets() +self.add_process_info_collection_packets() + # Assumes test_sequence has anything added needed to setup the initial state. # (Like optionally enabling QThreadsInStopReply.) if post_startup_log_lines: @@ -34,6 +40,7 @@ class TestGdbRemoteThreadsInStopReply( ], True) context = self.expect_gdbremote_sequence() self.assertIsNotNone(context) +hw_info = self.parse_hw_info(context) # Give threads time to start up, then break. time.sleep(1) @@ -77,14 +84,89 @@ class TestGdbRemoteThreadsInStopReply( kv_dict = self.parse_key_val_dict(key_vals_text) self.assertIsNotNone(kv_dict) +result = dict(); +result["pc_register"] = hw_info["pc_register"] +result["little_endian"] = hw_info["little_endian"] +for key_field in field_names: +result[key_field] = kv_dict.get(key_field) + +return result + +def gather_stop_reply_threads(self, post_startup_log_lines, thread_count): # Pull out threads from stop response. -stop_reply_threads_text = kv_dict.get("threads") +stop_reply_threads_text = self.gather_stop_reply_fields( +post_startup_log_lines, thread_count, ["threads"])["threads"] if stop_reply_threads_text: return [int(thread_id, 16) for thread_id in stop_reply_threads_text.split(",")] else: return [] +def gather_stop_reply_pcs(self, post_startup_log_lines, thread_count): +results = self.gather_stop_reply_fields( post_startup_log_lines, +thread_count, ["threads", "thread-pcs"]) +if not results: +return [] + +threads_text = results["threads"] +pcs_text = results["thread-pcs"] +thread_ids = threads_text.split(",") +pcs = pcs_text.split(",") +self.assertTrue(len(thread_ids) == len(pcs)) + +thread_pcs = dict() +for i in range(0, len(pcs)): +thread_pcs[int(thread_ids[i], 16)] = pcs[i] + +result = dict() +result["thread_pcs"] = thread_pcs +result["pc_register"] = results["pc_register"] +result["little_endian"] = results["little_endian"] +return result + +def switch_endian(self, egg): +return "".join(reversed(re.findall("..", egg))) + +def parse_hw_info(self, context): +self.assertIsNotNone(context) +process_info = self.parse_pro
[Lldb-commits] [PATCH] D28808: Fix a bug where lldb does not respect the packet size.
abidh marked an inline comment as done. abidh added a comment. Greg, any further comment on this patch. https://reviews.llvm.org/D28808 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28944: Provide option to set pc of the file loaded in memory.
clayborg requested changes to this revision. clayborg added a comment. This revision now requires changes to proceed. Just set an error when "set_pc" is true and you get no entry point back from thee object file and this is good to go. Comment at: source/Symbol/ObjectFile.cpp:685-686 +Address file_entry = GetEntryPointAddress(); +if (file_entry.IsValid()) + reg_context->SetPC(file_entry.GetLoadAddress(&target)); + } Set an error if there is no valid entry point address. This would happen if someone tries to run load on a shared library. https://reviews.llvm.org/D28944 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28808: Fix a bug where lldb does not respect the packet size.
clayborg requested changes to this revision. clayborg added a comment. This revision now requires changes to proceed. See easy inline fix and this will be good to go Comment at: source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp:4004 +// hope that data being written is small enough to fit. +Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet( +GDBR_LOG_COMM | GDBR_LOG_MEMORY)); LogIfAny, not LogIfAll. Then either bit will work to show this. https://reviews.llvm.org/D28808 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
boris.ulasevich added a comment. > Jim should probably review this change. Yes, thank you. We are in contact with Jim. And I see now I had put Jim to Subscribers list instead of Revievers list :) > That said, I don't see any failures on linux currently. Can you elaborate on > which tests are failing and why? Let me explain it. A month ago I got ready-to-land resolution for https://reviews.llvm.org/D26497 and committed it. Very soon I got tests fail notification from build robot: several tests (including my new test) failed on Ubuntu. The decision was to revert the change temporary, and study the issue without a rush. And now I am back with the fix for this issue. I am going to commit https://reviews.llvm.org/D26497 back after this fix. Repository: rL LLVM https://reviews.llvm.org/D28945 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
jingham requested changes to this revision. jingham added a comment. This revision now requires changes to proceed. The restoration of the stop reason works for the most part. For instance, when we call a user expression the stop reason is correctly restored. This was done by saving and restoring the stop info. There's one other little two-step you have to do to produce the "cooked" stop reason. For instance, if you stop because of a breakpoint hit that completed a "step-out" plan, you have to check the completed plan stack to figure out what the user visible stop reason was. But before Boris' change the state of the completed plan stack wasn't important once this was done. Boris' change started using the completed plan stack for more than just the initial determination of the cooked stop reason, so you do need to preserve it as well. I don't think that letting the completed plans live a little longer should pose any problems. The plans should do whatever cleanup they are going to do when they get popped, and should not rely on the destructors to do this work. But it would be worth a quick audit to make sure I didn't get sloppy about that before we make this change, and we should document that requirement in the ThreadPlan dissertation at the beginning of ThreadPlan.h. Can you do that, and then we should be fine to go in? Repository: rL LLVM https://reviews.llvm.org/D28945 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
jingham added a comment. BTW, this shows one important difference between OS X and Linux that pops up from time to time. On OS X, we can allocate memory in the target process without having to call functions in the target. We don't do that by hand in lldb (that wouldn't work for remote debugging) rather we have a packet we send to debugserver, and it does the allocation. But the Linux lldb-server doesn't have this ability so on Linux, lldb ends up having to make and run a ThreadPlanCallFunction from awkward places in processing stops. This works for the most part, but it sometimes requires tweaks like this. This functionality gets tested pretty rigorously just by using lldb on Linux, since this gets done as a side effect of many operations. So it is tested indirectly by the test suite. I'm not sure how you would test this directly, however. Repository: rL LLVM https://reviews.llvm.org/D28945 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D28945: Add completed_plan_stack to LLDB ThreadStateCheckpoint
labath added a comment. Thank you both for explaining the situation. The "test failure on ubuntu" part threw me off -- I did not realize you were talking about hypothetical failure should a different change go in. I was worried we have some very environment-dependent tests. Looks good from my side then. Repository: rL LLVM https://reviews.llvm.org/D28945 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r292696 - Add a catch-all line for detecting dyld in the inferior process
Author: jmolenda Date: Fri Jan 20 19:17:36 2017 New Revision: 292696 URL: http://llvm.org/viewvc/llvm-project?rev=292696&view=rev Log: Add a catch-all line for detecting dyld in the inferior process shlibs so we don't miss dyld. Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp?rev=292696&r1=292695&r2=292696&view=diff == --- lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp (original) +++ lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp Fri Jan 20 19:17:36 2017 @@ -542,6 +542,10 @@ void DynamicLoaderDarwin::UpdateSpecialB dyld_idx = i; } } + else { +// catch-all for any other environment -- trust that dyld is actually dyld +dyld_idx = i; + } } else if (image_infos[i].header.filetype == llvm::MachO::MH_EXECUTE) { exe_idx = i; } Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp?rev=292696&r1=292695&r2=292696&view=diff == --- lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp (original) +++ lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp Fri Jan 20 19:17:36 2017 @@ -139,6 +139,7 @@ bool DynamicLoaderMacOS::DidSetNotificat void DynamicLoaderMacOS::ClearNotificationBreakpoint() { if (LLDB_BREAK_ID_IS_VALID(m_break_id)) { m_process->GetTarget().RemoveBreakpointByID(m_break_id); +m_break_id = LLDB_INVALID_BREAK_ID; } } ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits