[LLDB] Find debugserver in Command Line Tools as well
authorAntonio Afonso <antonio.afonso@gmail.com>
Thu, 25 Jul 2019 20:53:00 +0000 (20:53 +0000)
committerAntonio Afonso <antonio.afonso@gmail.com>
Thu, 25 Jul 2019 20:53:00 +0000 (20:53 +0000)
commit9294c87282c6cf93ffd522a5b5ff82d9c0d76205
treeefbbc81f0aa130a6e4034ace4777b5e519812408
parent7c424d8b4d97f94f9f613b1dd4a6c494c96a6a12
[LLDB] Find debugserver in Command Line Tools as well

Summary:
This might be an edge case in regular use but if you're shipping an lldb version with no debugserver lldb will try to use the System one.
However, lldb only knows how to find the Xcode one and not the Command Line Tools one. This diff fixes that.

We try to find debugserver with `PlatformDarwin::LocateExecutable("debugserver")`, we call `xcode-select -p` to get the path and then assume this path is of Xcode.

The changes I did are:
* Change `PlatformDarwin::LocateExecutable` to also add the Command Line Tools directory to the list of paths to search for debugserver.
* Created a new function to find the Command Line Tools directory named `GetCommandLineToolsLibraryPath`.
* Refactored the code that calls `xcode-select -p` into its own function `GetXcodeSelectPath()`. There were 2 identical pieces of code for this so I reduced it to one and used this function everywhere instead.
* I also changed `PlatformDarwin::GetSDKDirectoryForModules` to use the `SDKs` directory that exists in the Command Line Tools installation.

I'm not sure how to create tests for this. PlatformDarwinTest is really limited and I couldn't find how to mock Filesystem::Instance() so I could create a virtual file system.

Reviewers: clayborg, JDevlieghere

Reviewed By: clayborg, JDevlieghere

Subscribers: jasonmolenda, lldb-commits

Tags: #lldb

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

llvm-svn: 367052
lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp