8 Commits

Author SHA1 Message Date
Adrian Prantl
cb6d53198e Revert "[lldb] Change the implementation of Status to store an llvm::Error (NFC) (#106774)"
This reverts commit 06939fa2e140a171132275ec0ea1857d20c5dbdd.
2024-09-18 17:28:10 -07:00
Adrian Prantl
8b456b436f Revert "[lldb] Update SocketTestUtilities.cpp to use CloneableECError"
This reverts commit 2383bc8216bd7d373bb48337199c09d40922adf2.
2024-09-18 17:28:09 -07:00
Adrian Prantl
05a292caa5 Revert "[lldb] Add handling of ECError to unit test to validate a hypothesis on the bots"
This reverts commit c86b1b0f44509585390c8df09b41d707e6a14011.
2024-09-18 17:28:09 -07:00
Adrian Prantl
c86b1b0f44 [lldb] Add handling of ECError to unit test to validate a hypothesis on the bots 2024-09-18 16:39:22 -07:00
Adrian Prantl
2383bc8216 [lldb] Update SocketTestUtilities.cpp to use CloneableECError 2024-09-18 15:54:24 -07:00
Adrian Prantl
06939fa2e1
[lldb] Change the implementation of Status to store an llvm::Error (NFC) (#106774)
(based on a conversation I had with @labath yesterday in
https://github.com/llvm/llvm-project/pull/106442)

Most APIs that currently vend a Status would be better served by
returning llvm::Expected<> instead. If possibles APIs should be
refactored to avoid Status. The only legitimate long-term uses of Status
are objects that need to store an error for a long time (which should be
questioned as a design decision, too).

This patch makes the transition to llvm::Error easier by making the
places that cannot switch to llvm::Error explicit: They are marked with
a call to Status::clone(). Every other API can and should be refactored
to use llvm::Expected. In the end Status should only be used in very few
places.

Whenever an unchecked Error is dropped by Status it logs this to the
verbose API channel.

Implementation notes:

This patch introduces two new kinds of error_category as well as new
llvm::Error types. Here is the mapping of lldb::ErrorType to
llvm::Errors:
```
   (eErrorTypeInvalid)
   eErrorTypeGeneric      llvm::StringError
   eErrorTypePOSIX        llvm::ECError
   eErrorTypeMachKernel   MachKernelError
   eErrorTypeExpression   llvm::ErrorList<ExpressionError>
   eErrorTypeWin32        Win32Error
```
2024-09-18 14:54:49 -07:00
Jordan Rupprecht
1b988ff092 [test] Use either 127.0.0.1 or [::1] to run in ipv6-only environments.
Test for both IPv4 and IPv6 support to determine if either `127.0.0.1` or `[::1]` are appropriate IP addresses to attempt to connect to. In an IPv6-only environment, `127.0.0.1` is not available.

Using `localhost` is problematic because we might not be able to get the same port on each IP flavor, and later try to connect to the wrong thing.

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D133393
2022-09-09 14:00:35 -07:00
Pavel Labath
59656c0492 [lldb] Make CommunicationTest compatible with windows
Our (TCP) socket support is in a much better state than pipes. Use that
for testing the Communication class.

Move the CreateTCPConnectedSockets function
(SocketTestUtilities.{h,cpp}) to a place where it can be used from
Communication tests.
2022-08-26 15:25:46 +02:00