JDevlieghere added a comment.

In D78588#1996222 <https://reviews.llvm.org/D78588#1996222>, @labath wrote:

> The presence of `llvm_unreachable` here is questionable, but I am surprised 
> that this comes up in the context of reproducers. If the reproducers cause 
> this function to be called with a different ArchSpec, then it sounds like 
> there are bigger problems that need to be solved..


I only mentioned the reproducers to show that we can reach this code with an 
invalid ArchSpec and that this is not just a speculative fix. Since you're 
interested in what triggered this: TestRecognizeBreakpoint.py is a 
GDBRemoteTestBase, which starts with an empty Target (hence the invalid 
ArchSpec later on) and then connects to the test's GDB remote. It does so 
through `ConnectRemote` which for `ProcessGDBRemote` calls 
`ConnectToDebugserver`, which bypasses redirecting the connection to the GDB 
replay server. Fixing the reproducers issue is just a matter of moving that 
code down, so we connect to the replay server instead of the test's gdb server 
(which isn't there during active replay).

> If we do want to do something about the crash, then I think we ought to just 
> remove the `llvm_unreachable`. I don't think it makes sense to bail out on 
> invalid ArchSpecs, but blow up on not-yet-supported architectures. If 
> anything, I would say it should be the opposite -- I don't think it makes 
> sense for anyone to call this function with an invalid/empty ArchSpec, but it 
> may be reasonable to enable some degraded behavior for architectures which 
> are not fully supported.

Sounds reasonable to me. We can add an assert `arch.IsValid()` to enforce that 
precondition and have the default case return `0`.


Repository:
  rLLDB LLDB

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D78588/new/

https://reviews.llvm.org/D78588



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to