[lldb/Core] Don't crash in GetSoftwareBreakpointTrapOpcode for unknown triples
authorJonas Devlieghere <jonas@devlieghere.com>
Fri, 24 Apr 2020 16:03:51 +0000 (09:03 -0700)
committerJonas Devlieghere <jonas@devlieghere.com>
Fri, 24 Apr 2020 16:10:41 +0000 (09:10 -0700)
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

index 3069a36..3e3c476 100644 (file)
@@ -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);