[Lldb-commits] [lldb] 68a9356 - [lldb] [testsuite] TestReproducerAttach.py: Fix dependency on external symbol files

2020-05-09 Thread Jan Kratochvil via lldb-commits

Author: Jan Kratochvil
Date: 2020-05-09T09:06:37+02:00
New Revision: 68a9356bdea69dbcec1233f8b1fab47e72fca991

URL: 
https://github.com/llvm/llvm-project/commit/68a9356bdea69dbcec1233f8b1fab47e72fca991
DIFF: 
https://github.com/llvm/llvm-project/commit/68a9356bdea69dbcec1233f8b1fab47e72fca991.diff

LOG: [lldb] [testsuite] TestReproducerAttach.py: Fix dependency on external 
symbol files

D55859 and D63339 prevented needless dependencies on system symbol
files. This testcase was checked-in afterwards and it brings back one
such unwanted dependency. Under some circumstances it may cause false
FAILs and/or excessive resource usage to run the testcase.

clang-format does not support .py so I have formatted it as I found most
compatible.

Also this is not a full testcase-style initialization, for example
--no-lldbinit ignores env("NO_LLDBINIT") setting which lldbtest.py does
implement:
  # If we spawn an lldb process for test (via pexpect), do not load the
  # init file unless told otherwise.
  if os.environ.get("NO_LLDBINIT") != "NO":
  self.lldbOption += " --no-lldbinit"

But this is what lldbpexpect.py does - it also ignores
env("NO_LLDBINIT"). Sure one could also fix lldbpexpect.py to unify the
initialization more with lldbtest.py but I find that outside of the
scope of this patch.

Differential Revision: https://reviews.llvm.org/D79649

Added: 


Modified: 
lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py

Removed: 




diff  --git 
a/lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py 
b/lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
index 70f8d5842fe4..b02b170a7e3f 100644
--- a/lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
+++ b/lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
@@ -47,9 +47,10 @@ def test_reproducer_attach(self):
 # Use Popen because pexpect is overkill and spawnSubprocess is
 # asynchronous.
 capture = subprocess.Popen([
-lldbtest_config.lldbExec, '-b', '--capture', '--capture-path',
-reproducer, '-o', 'proc att -n {}'.format(exe), '-o',
-'reproducer generate'
+lldbtest_config.lldbExec, '-b', '--no-lldbinit', '--no-use-colors']
++ sum(map(lambda x: ['-O', x], self.setUpCommands()), [])
++ ['--capture', '--capture-path', reproducer,
+'-o', 'proc att -n {}'.format(exe), '-o', 'reproducer generate'
 ],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,



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


[Lldb-commits] [PATCH] D79649: [lldb] [testsuite] TestReproducerAttach.py: Fix dependency on external symbol files

2020-05-09 Thread Jan Kratochvil via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG68a9356bdea6: [lldb] [testsuite] TestReproducerAttach.py: 
Fix dependency on external symbol… (authored by jankratochvil).

Changed prior to commit:
  https://reviews.llvm.org/D79649?vs=262941&id=262997#toc

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79649

Files:
  lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py


Index: lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
===
--- lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
+++ lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
@@ -47,9 +47,10 @@
 # Use Popen because pexpect is overkill and spawnSubprocess is
 # asynchronous.
 capture = subprocess.Popen([
-lldbtest_config.lldbExec, '-b', '--capture', '--capture-path',
-reproducer, '-o', 'proc att -n {}'.format(exe), '-o',
-'reproducer generate'
+lldbtest_config.lldbExec, '-b', '--no-lldbinit', '--no-use-colors']
++ sum(map(lambda x: ['-O', x], self.setUpCommands()), [])
++ ['--capture', '--capture-path', reproducer,
+'-o', 'proc att -n {}'.format(exe), '-o', 'reproducer generate'
 ],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,


Index: lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
===
--- lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
+++ lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py
@@ -47,9 +47,10 @@
 # Use Popen because pexpect is overkill and spawnSubprocess is
 # asynchronous.
 capture = subprocess.Popen([
-lldbtest_config.lldbExec, '-b', '--capture', '--capture-path',
-reproducer, '-o', 'proc att -n {}'.format(exe), '-o',
-'reproducer generate'
+lldbtest_config.lldbExec, '-b', '--no-lldbinit', '--no-use-colors']
++ sum(map(lambda x: ['-O', x], self.setUpCommands()), [])
++ ['--capture', '--capture-path', reproducer,
+'-o', 'proc att -n {}'.format(exe), '-o', 'reproducer generate'
 ],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79659: [lldb/Commands] Add ability to run shell command on the host.

2020-05-09 Thread Med Ismail Bennani via Phabricator via lldb-commits
mib updated this revision to Diff 262999.
mib added a comment.

With the first implementation, I thought it'd be a good idea to have separate 
Command Objects for `platform shell` and `shell` because I was imagining the 
latter could be more "powerful": `shell` could have an interactive mode like 
the `script` command, which might not be as relevant for `platform shell` when 
debugging a remote target.

That was my original idea, but I agree we should avoid code duplication, so 
here is a different implementation following @jingham's suggestions. `shell` is 
an alias to `platform shell -h --` in this case.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79659

Files:
  lldb/source/Commands/CommandObjectPlatform.cpp
  lldb/source/Commands/Options.td
  lldb/source/Interpreter/CommandInterpreter.cpp
  lldb/test/API/commands/shell/TestShellCommand.py

Index: lldb/test/API/commands/shell/TestShellCommand.py
===
--- /dev/null
+++ lldb/test/API/commands/shell/TestShellCommand.py
@@ -0,0 +1,45 @@
+"""
+Test the lldb host shell command.
+"""
+
+
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class ShellCommandTestCase(TestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@no_debug_info_test
+def test_help_platform(self):
+self.expect("help shell", substrs=["shell ",
+   "Run a shell command on the host."])
+
+@expectedFailureAll(oslist=["windows"])
+@no_debug_info_test
+def test_shell(self):
+""" Test that the shell command can invoke ls. """
+triple = self.dbg.GetSelectedPlatform().GetTriple()
+if re.match(".*-.*-windows", triple):
+self.expect("shell dir c:\\", substrs=["Windows", "Program Files"])
+elif re.match(".*-.*-.*-android", triple):
+self.expect("shell ls /",
+substrs=["cache", "dev", "system"])
+else:
+self.expect("shell ls /", substrs=["dev", "tmp", "usr"])
+
+@no_debug_info_test
+def test_shell_builtin(self):
+""" Test a shell built-in command (echo) """
+self.expect("shell echo hello lldb",
+substrs=["hello lldb"])
+
+@no_debug_info_test
+def test_shell_timeout(self):
+""" Test a shell built-in command (sleep) that times out """
+self.expect("shell -t 1 --  sleep 3", error=True, substrs=[
+"error: timed out waiting for shell command to complete"])
Index: lldb/source/Interpreter/CommandInterpreter.cpp
===
--- lldb/source/Interpreter/CommandInterpreter.cpp
+++ lldb/source/Interpreter/CommandInterpreter.cpp
@@ -381,6 +381,16 @@
 }
   }
 
+  cmd_obj_sp = GetCommandSPExact("platform shell", false);
+  if (cmd_obj_sp) {
+CommandAlias *shell_alias = AddAlias("shell", cmd_obj_sp, " --host --");
+if (shell_alias) {
+  shell_alias->SetHelp("Run a shell command on the host.");
+  shell_alias->SetHelpLong("");
+  shell_alias->SetSyntax("shell ");
+}
+  }
+
   cmd_obj_sp = GetCommandSPExact("process kill", false);
   if (cmd_obj_sp) {
 AddAlias("kill", cmd_obj_sp);
Index: lldb/source/Commands/Options.td
===
--- lldb/source/Commands/Options.td
+++ lldb/source/Commands/Options.td
@@ -622,6 +622,8 @@
 }
 
 let Command = "platform shell" in {
+  def platform_shell_host : Option<"host", "h">,
+Desc<"Run the commands on the host shell when enabled.">;
   def platform_shell_timeout : Option<"timeout", "t">, Arg<"Value">,
 Desc<"Seconds to wait for the remote host to finish running the command.">;
 }
@@ -701,6 +703,7 @@
 Desc<"Set the synchronicity of this command's executions with regard to "
 "LLDB event system.">;
 }
+
 let Command = "source info" in {
   def source_info_count : Option<"count", "c">, Arg<"Count">,
 Desc<"The number of line entries to display.">;
Index: lldb/source/Commands/CommandObjectPlatform.cpp
===
--- lldb/source/Commands/CommandObjectPlatform.cpp
+++ lldb/source/Commands/CommandObjectPlatform.cpp
@@ -1567,6 +1567,9 @@
   const char short_option = (char)GetDefinitions()[option_idx].short_option;
 
   switch (short_option) {
+  case 'h':
+m_use_host_platform = true;
+break;
   case 't':
 uint32_t timeout_sec;
 if (option_arg.getAsInteger(10, timeout_sec))
@@ -1574,7 +1577,7 @@
   "could not convert \"%s\" to a numeric value.",
   option_arg.str().c_str());
 else
-  timeout = std::chrono::seconds(timeout_sec);
+  m_timeout = std::chrono::seconds(timeout_sec);
 break;

[Lldb-commits] [PATCH] D79659: [lldb/Commands] Add ability to run shell command on the host.

2020-05-09 Thread Med Ismail Bennani via Phabricator via lldb-commits
mib updated this revision to Diff 263005.
mib edited the summary of this revision.
mib added a comment.

It looks like command options are not supported on aliases that already have 
options:

  (lldb) shell -t 1 -- sleep 5
  zsh:1: command not found: -t
  error: command returned with status 127

In this case, `shell -t 1 -- sleep 5 ` expands to `platform shell --host -- -t 
1 -- sleep 5`,  and the option argument is passed as shell command instead of 
being parsed by lldb.

I might have done something wrong when creating the alias, so I'll skip the 
`test_shell_timeout` test until I come up with with a solution.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79659

Files:
  lldb/source/Commands/CommandObjectPlatform.cpp
  lldb/source/Commands/Options.td
  lldb/source/Interpreter/CommandInterpreter.cpp
  lldb/test/API/commands/shell/TestShellCommand.py

Index: lldb/test/API/commands/shell/TestShellCommand.py
===
--- /dev/null
+++ lldb/test/API/commands/shell/TestShellCommand.py
@@ -0,0 +1,46 @@
+"""
+Test the lldb host shell command alias.
+"""
+
+
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class ShellCommandTestCase(TestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@no_debug_info_test
+def test_help_platform(self):
+self.expect("help shell", substrs=["Run a shell command on the host.",
+   "shell "])
+
+@expectedFailureAll(oslist=["windows"])
+@no_debug_info_test
+def test_shell(self):
+""" Test that the shell command can invoke ls. """
+triple = self.dbg.GetSelectedPlatform().GetTriple()
+if re.match(".*-.*-windows", triple):
+self.expect("shell dir c:\\", substrs=["Windows", "Program Files"])
+elif re.match(".*-.*-.*-android", triple):
+self.expect("shell ls /",
+substrs=["cache", "dev", "system"])
+else:
+self.expect("shell ls /", substrs=["dev", "tmp", "usr"])
+
+@no_debug_info_test
+def test_shell_builtin(self):
+""" Test a shell built-in command (echo) """
+self.expect("shell echo hello lldb",
+substrs=["hello lldb"])
+
+@no_debug_info_test
+def test_shell_timeout(self):
+""" Test a shell built-in command (sleep) that times out """
+self.skipTest("command options not supported in alias")
+self.expect("shell -t 1 --  sleep 3", error=True, substrs=[
+"error: timed out waiting for shell command to complete"])
Index: lldb/source/Interpreter/CommandInterpreter.cpp
===
--- lldb/source/Interpreter/CommandInterpreter.cpp
+++ lldb/source/Interpreter/CommandInterpreter.cpp
@@ -381,6 +381,16 @@
 }
   }
 
+  cmd_obj_sp = GetCommandSPExact("platform shell", false);
+  if (cmd_obj_sp) {
+CommandAlias *shell_alias = AddAlias("shell", cmd_obj_sp, " --host --");
+if (shell_alias) {
+  shell_alias->SetHelp("Run a shell command on the host.");
+  shell_alias->SetHelpLong("");
+  shell_alias->SetSyntax("shell ");
+}
+  }
+
   cmd_obj_sp = GetCommandSPExact("process kill", false);
   if (cmd_obj_sp) {
 AddAlias("kill", cmd_obj_sp);
Index: lldb/source/Commands/Options.td
===
--- lldb/source/Commands/Options.td
+++ lldb/source/Commands/Options.td
@@ -622,6 +622,8 @@
 }
 
 let Command = "platform shell" in {
+  def platform_shell_host : Option<"host", "h">,
+Desc<"Run the commands on the host shell when enabled.">;
   def platform_shell_timeout : Option<"timeout", "t">, Arg<"Value">,
 Desc<"Seconds to wait for the remote host to finish running the command.">;
 }
@@ -701,6 +703,7 @@
 Desc<"Set the synchronicity of this command's executions with regard to "
 "LLDB event system.">;
 }
+
 let Command = "source info" in {
   def source_info_count : Option<"count", "c">, Arg<"Count">,
 Desc<"The number of line entries to display.">;
Index: lldb/source/Commands/CommandObjectPlatform.cpp
===
--- lldb/source/Commands/CommandObjectPlatform.cpp
+++ lldb/source/Commands/CommandObjectPlatform.cpp
@@ -1567,6 +1567,9 @@
   const char short_option = (char)GetDefinitions()[option_idx].short_option;
 
   switch (short_option) {
+  case 'h':
+m_use_host_platform = true;
+break;
   case 't':
 uint32_t timeout_sec;
 if (option_arg.getAsInteger(10, timeout_sec))
@@ -1574,7 +1577,7 @@
   "could not convert \"%s\" to a numeric value.",
   option_arg.str().c_str());
 else
-  timeout = std::chrono::seconds(timeout_sec);

[Lldb-commits] [lldb] c9537b9 - [lldb/debugserver] Include TargetConditionals.h where needed

2020-05-09 Thread Fred Riss via lldb-commits

Author: Fred Riss
Date: 2020-05-09T10:12:17-07:00
New Revision: c9537b9cc862b7ec1ba502043e42bc6ebd24dec0

URL: 
https://github.com/llvm/llvm-project/commit/c9537b9cc862b7ec1ba502043e42bc6ebd24dec0
DIFF: 
https://github.com/llvm/llvm-project/commit/c9537b9cc862b7ec1ba502043e42bc6ebd24dec0.diff

LOG: [lldb/debugserver] Include TargetConditionals.h where needed

MachProcess.mm uses a TARGET_OS_ macro without directly including
TargetConditionals.h. This currently works as we get the header
as an indirect dependency, but might not in the future.

I just spent some time investigating an internal regression
caused by a similar issue, so I audited the codebase for such
cases.

Added: 


Modified: 
lldb/tools/debugserver/source/MacOSX/MachProcess.mm

Removed: 




diff  --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm 
b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm
index 032f2a877903..95060c552f25 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm
+++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm
@@ -34,6 +34,7 @@
 #include 
 #include 
 
+#include 
 #import 
 
 #include "DNBDataRef.h"



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


[Lldb-commits] [PATCH] D79659: [lldb/Commands] Add ability to run shell command on the host.

2020-05-09 Thread Jonas Devlieghere via Phabricator via lldb-commits
JDevlieghere added inline comments.



Comment at: lldb/source/Commands/CommandObjectPlatform.cpp:1625
 
+// When called from the `shell` alias with no argument, exit.
+if (args.GetRawPart().empty())

Is this only true for the alias?



Comment at: lldb/test/API/commands/shell/TestShellCommand.py:27
+triple = self.dbg.GetSelectedPlatform().GetTriple()
+if re.match(".*-.*-windows", triple):
+self.expect("shell dir c:\\", substrs=["Windows", "Program Files"])

I assume you copied this from `TestPlatformCommand.py` but if the test is 
skipped on Windows we can probably remove this line here. 

On that note, I think we could avoid some code duplication by merging these 
tests and have the same tests, once called with `shell` and once with `platform 
shell`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79659



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


[Lldb-commits] [PATCH] D79614: Fix error reporting for qLaunchSuccess, check for fix/enable it via qSupported

2020-05-09 Thread Greg Clayton via Phabricator via lldb-commits
clayborg added a comment.

In D79614#2027869 , @jasonmolenda 
wrote:

> In D79614#2027861 , @clayborg wrote:
>
> > Why not just fix qLaunchSuccess by passing the string through a 
> > "escape_string(...)" function? Any packet that can return a string with 
> > unknown content should be escaped correctly. Adding a new packet doesn't 
> > really fix the problem in older debugserver/lldb-server binaries anyway.
>
>
> lldb wouldn't know whether to decode the returned error string or not -- 
> short of using a debugserver version #.  We'll need to interoperate with 
> debugservers that send the unescaped qLaunchSuccess error messages for years 
> to come.


It should always decode a raw string so I don't see what you mean here. Any 
packet that returns a normal string, not hex ascii encoded, must escape the 
string. The only bug here is that we are not escaping the string that 
debugserver sends back. No need for the hex ASCII stuff if we escape any 
special characters right?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79614



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


[Lldb-commits] [PATCH] D79219: [CMake] Simplify CMake handling for zlib

2020-05-09 Thread Shoaib Meenai via Phabricator via lldb-commits
smeenai added inline comments.



Comment at: lld/test/lit.site.cfg.py.in:16
 config.target_triple = "@TARGET_TRIPLE@"
-config.python_executable = "@Python3_EXECUTABLE@"
-config.have_zlib = @HAVE_LIBZ@
+config.python_executable = "@PYTHON_EXECUTABLE@"
+config.have_zlib = @LLVM_ENABLE_ZLIB@

This seems like an unintended/unrelated change.



Comment at: llvm/cmake/config-ix.cmake:506
 
-if (LLVM_ENABLE_ZLIB )
-  # Check if zlib is available in the system.
-  if ( NOT HAVE_ZLIB_H OR NOT HAVE_LIBZ )
-set(LLVM_ENABLE_ZLIB 0)
+if(LLVM_ENABLE_ZLIB)
+  if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)

How come you're moving this out of the MSan check block? Isn't that a behavior 
change?



Comment at: llvm/lib/Support/CMakeLists.txt:207
+  get_filename_component(zlib_library ${zlib_library} NAME)
+  if(CMAKE_STATIC_LIBRARY_PREFIX AND
+ zlib_library MATCHES 
"^${CMAKE_STATIC_LIBRARY_PREFIX}.*${CMAKE_STATIC_LIBRARY_SUFFIX}$")

Even if there's no prefix, wouldn't you still wanna strip the suffix?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79219



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


[Lldb-commits] [PATCH] D79219: [CMake] Simplify CMake handling for zlib

2020-05-09 Thread Petr Hosek via Phabricator via lldb-commits
phosek added a comment.

Ping?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79219



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


[Lldb-commits] [PATCH] D79614: Fix error reporting for qLaunchSuccess, check for fix/enable it via qSupported

2020-05-09 Thread Jason Molenda via Phabricator via lldb-commits
jasonmolenda added a comment.

In D79614#2028295 , @clayborg wrote:

> In D79614#2027869 , @jasonmolenda 
> wrote:
>
> > In D79614#2027861 , @clayborg 
> > wrote:
> >
> > > Why not just fix qLaunchSuccess by passing the string through a 
> > > "escape_string(...)" function? Any packet that can return a string with 
> > > unknown content should be escaped correctly. Adding a new packet doesn't 
> > > really fix the problem in older debugserver/lldb-server binaries anyway.
> >
> >
> > lldb wouldn't know whether to decode the returned error string or not -- 
> > short of using a debugserver version #.  We'll need to interoperate with 
> > debugservers that send the unescaped qLaunchSuccess error messages for 
> > years to come.
>
>
> It should always decode a raw string so I don't see what you mean here. Any 
> packet that returns a normal string, not hex ascii encoded, must escape the 
> string. The only bug here is that we are not escaping the string that 
> debugserver sends back. No need for the hex ASCII stuff if we escape any 
> special characters right?


Ah, I see what you're getting at --- yes I bet if we switch to using the binary 
escape protocol for the error message that would work just as well.  It's a 
one-off way to report an error message which doesn't thrill me, but you're 
right that this may not be worth the addition to qSupported etc.  I'll confirm 
that using the standard escaping is sufficient and decide whether to just do 
that, it's probably the right call.  Thanks for the feedback.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79614



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