[Lldb-commits] [lldb] [lldb][lldb-server][Darwin] Error when gdbserver mode is requested (PR #199654)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Wed May 27 02:59:31 PDT 2026
https://github.com/DavidSpickett updated https://github.com/llvm/llvm-project/pull/199654
>From 87b7cc7f48089d97da2940600d80d8fb5732819f Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at arm.com>
Date: Tue, 26 May 2026 10:43:07 +0000
Subject: [PATCH 1/3] [lldb][lldb-server][Darwin] Error when gdbserver mode is
requested
Fixes #199035
lldb-server's platform mode works on Apple platforms but the gdbserver
mode does not. Users should use debugserver instead, and platform
mode knows to spawn debugserver instead of lldb-server.
I'm adding an error to state this, because until now it would maybe
appear to work, or crash in strange ways. None of which can be fixed
by a user and are a waste of our time dealing with the bug reports.
---
lldb/tools/lldb-server/lldb-server.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lldb/tools/lldb-server/lldb-server.cpp b/lldb/tools/lldb-server/lldb-server.cpp
index 62255c708eac0..747f44f16ce29 100644
--- a/lldb/tools/lldb-server/lldb-server.cpp
+++ b/lldb/tools/lldb-server/lldb-server.cpp
@@ -61,9 +61,15 @@ int main(int argc, char *argv[]) {
switch (argv[1][0]) {
case 'g': {
+#if defined(__APPLE__)
+ fprintf(stderr, "gdbserver mode is not supported on Apple platforms. "
+ "Use debugserver instead.");
+ return EXIT_FAILURE;
+#else
llgs::Initialize();
auto terminate = llvm::scope_exit([]() { llgs::Terminate(); });
return main_gdbserver(argc, argv);
+#endif
}
case 'p': {
llgs::Initialize();
>From 0ecc9ba4c4023cdd897efe9e4386517bd3f9380f Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at arm.com>
Date: Tue, 26 May 2026 10:55:41 +0000
Subject: [PATCH 2/3] tests
---
lldb/test/Shell/lldb-server/TestGdbserverErrorDarwin.test | 4 ++++
lldb/test/Shell/lldb-server/TestGdbserverErrorMessages.test | 3 +++
2 files changed, 7 insertions(+)
create mode 100644 lldb/test/Shell/lldb-server/TestGdbserverErrorDarwin.test
diff --git a/lldb/test/Shell/lldb-server/TestGdbserverErrorDarwin.test b/lldb/test/Shell/lldb-server/TestGdbserverErrorDarwin.test
new file mode 100644
index 0000000000000..534927148bc56
--- /dev/null
+++ b/lldb/test/Shell/lldb-server/TestGdbserverErrorDarwin.test
@@ -0,0 +1,4 @@
+REQUIRES: system-darwin
+
+RUN: not %lldb-server gdbserver 2>&1 | FileCheck %s
+CHECK: gdbserver mode is not supported on Apple platforms. Use debugserver instead.
diff --git a/lldb/test/Shell/lldb-server/TestGdbserverErrorMessages.test b/lldb/test/Shell/lldb-server/TestGdbserverErrorMessages.test
index c7e0c5cbac6dd..d0bcbcfb2eb37 100644
--- a/lldb/test/Shell/lldb-server/TestGdbserverErrorMessages.test
+++ b/lldb/test/Shell/lldb-server/TestGdbserverErrorMessages.test
@@ -1,3 +1,6 @@
+# gdbserver mode is not supported on Apple platforms.
+UNSUPPORTED: system-darwin
+
RUN: not %lldb-server gdbserver --fd 2>&1 | FileCheck --check-prefixes=FD1,ALL %s
FD1: error: --fd: missing argument
>From 11ccc068fcfc57b636e9c6229402651b0b9c925d Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at arm.com>
Date: Wed, 27 May 2026 09:04:58 +0000
Subject: [PATCH 3/3] newline
---
lldb/tools/lldb-server/lldb-server.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lldb/tools/lldb-server/lldb-server.cpp b/lldb/tools/lldb-server/lldb-server.cpp
index 747f44f16ce29..992dfed1e60ec 100644
--- a/lldb/tools/lldb-server/lldb-server.cpp
+++ b/lldb/tools/lldb-server/lldb-server.cpp
@@ -63,7 +63,7 @@ int main(int argc, char *argv[]) {
case 'g': {
#if defined(__APPLE__)
fprintf(stderr, "gdbserver mode is not supported on Apple platforms. "
- "Use debugserver instead.");
+ "Use debugserver instead.\n");
return EXIT_FAILURE;
#else
llgs::Initialize();
More information about the lldb-commits
mailing list