From 1fcd234ac54a0bb9dcb14338db5a336d80321662 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Fri, 24 Apr 2020 09:03:51 -0700 Subject: [PATCH] [lldb/Core] Don't crash in GetSoftwareBreakpointTrapOpcode for unknown triples This patch ensures we don't crash in GetSoftwareBreakpointTrapOpcode for not-yet-supported architectures but rather continue with degraded behavior. I found the issue in the context of an invalid ArchSpec, which should be handled further up the chain. In this patch I've also added an assert to cover that, so we can still catch those issues. Differential revision: https://reviews.llvm.org/D78588 --- lldb/source/Target/Platform.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lldb/source/Target/Platform.cpp b/lldb/source/Target/Platform.cpp index 3069a36..3e3c476 100644 --- a/lldb/source/Target/Platform.cpp +++ b/lldb/source/Target/Platform.cpp @@ -1822,6 +1822,7 @@ size_t Platform::ConnectToWaitingProcesses(lldb_private::Debugger &debugger, size_t Platform::GetSoftwareBreakpointTrapOpcode(Target &target, BreakpointSite *bp_site) { ArchSpec arch = target.GetArchitecture(); + assert(arch.IsValid()); const uint8_t *trap_opcode = nullptr; size_t trap_opcode_size = 0; @@ -1918,8 +1919,7 @@ size_t Platform::GetSoftwareBreakpointTrapOpcode(Target &target, } break; default: - llvm_unreachable( - "Unhandled architecture in Platform::GetSoftwareBreakpointTrapOpcode"); + return 0; } assert(bp_site); -- 2.7.4