Re: [Lldb-commits] [lldb] r320240 - Update PlatformDarwin::GetDeveloperDir to handle the two

2017-12-21 Thread Davide Italiano via lldb-commits
No worries! Do you want me to assign a PR/radar to you?

Thanks!

--
Davide

On Thu, Dec 21, 2017 at 5:41 PM, Jason Molenda  wrote:
> Yeah I need to see if I can write a unit test instantiating the platform and 
> changing the values that HostInfo::GetLLDBPath returns to synthetic values, 
> but I haven’t had time to look at that yet.
>
>> On Dec 21, 2017, at 7:01 AM, Davide Italiano via lldb-commits 
>>  wrote:
>>
>> Jason, any chance we can write a test case for this?
>>
>> --
>> Davide
>>
>>> On Mon, Dec 11, 2017 at 12:52 AM, Davide Italiano  
>>> wrote:
>>> Testcase?
>>>
>>> On Fri, Dec 8, 2017 at 7:06 PM, Jason Molenda via lldb-commits
>>>  wrote:
 Author: jmolenda
 Date: Fri Dec  8 19:06:19 2017
 New Revision: 320240

 URL: http://llvm.org/viewvc/llvm-project?rev=320240=rev
 Log:
 Update PlatformDarwin::GetDeveloperDir to handle the two
 most common cases where the Xcode.app bundle puts lldb -
 either as a default part of the bundle, or in a toolchain
 subdirectory, so the platform subclasses can find files
 relative to this directory.

 Dropped support for handling the case where the lldb
 framework was in /Library/PrivateFrameworks.  I think
 this was intended to handle the case where lldb is installed
 in / (outside the Xcode.app bundle) - but in that case, we
 can look in the raw directory file paths to find anything.

 

 Modified:
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

 Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
 URL: 
 http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=320240=320239=320240=diff
 ==
 --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
 +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Fri Dec  
 8 19:06:19 2017
 @@ -1132,28 +1132,33 @@ bool PlatformDarwin::ARMGetSupportedArch
   return false;
 }

 +// Return a directory path like /Applications/Xcode.app/Contents/Developer
 const char *PlatformDarwin::GetDeveloperDirectory() {
   std::lock_guard guard(m_mutex);
   if (m_developer_directory.empty()) {
 bool developer_dir_path_valid = false;
 char developer_dir_path[PATH_MAX];
 FileSpec temp_file_spec;
 +
 +// Get the lldb framework's file path, and if it exists, truncate some
 +// components to only the developer directory path.
 if (HostInfo::GetLLDBPath(ePathTypeLLDBShlibDir, temp_file_spec)) {
   if (temp_file_spec.GetPath(developer_dir_path,
  sizeof(developer_dir_path))) {
 +// e.g. 
 /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework
 char *shared_frameworks =
 strstr(developer_dir_path, "/SharedFrameworks/LLDB.framework");
 if (shared_frameworks) {
 -  ::snprintf(shared_frameworks,
 - sizeof(developer_dir_path) -
 - (shared_frameworks - developer_dir_path),
 - "/Developer");
 +  shared_frameworks[0] = '\0';  // truncate developer_dir_path at 
 this point
 +  strncat (developer_dir_path, "/Developer", sizeof 
 (developer_dir_path) - 1); // add /Developer on
   developer_dir_path_valid = true;
 } else {
 -  char *lib_priv_frameworks = strstr(
 -  developer_dir_path, 
 "/Library/PrivateFrameworks/LLDB.framework");
 -  if (lib_priv_frameworks) {
 -*lib_priv_frameworks = '\0';
 +  // e.g. 
 /Applications/Xcode.app/Contents/Developer/Toolchains/iOS11.2.xctoolchain/System/Library/PrivateFrameworks/LLDB.framework
 +  char *developer_toolchains =
 +strstr(developer_dir_path, "/Contents/Developer/Toolchains/");
 +  if (developer_toolchains) {
 +developer_toolchains += sizeof ("/Contents/Developer") - 1;
 +developer_toolchains[0] = '\0'; // truncate 
 developer_dir_path at this point
 developer_dir_path_valid = true;
   }
 }


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

Re: [Lldb-commits] [lldb] r320240 - Update PlatformDarwin::GetDeveloperDir to handle the two

2017-12-21 Thread Jason Molenda via lldb-commits
Yeah I need to see if I can write a unit test instantiating the platform and 
changing the values that HostInfo::GetLLDBPath returns to synthetic values, but 
I haven’t had time to look at that yet. 

> On Dec 21, 2017, at 7:01 AM, Davide Italiano via lldb-commits 
>  wrote:
> 
> Jason, any chance we can write a test case for this?
> 
> --
> Davide
> 
>> On Mon, Dec 11, 2017 at 12:52 AM, Davide Italiano  
>> wrote:
>> Testcase?
>> 
>> On Fri, Dec 8, 2017 at 7:06 PM, Jason Molenda via lldb-commits
>>  wrote:
>>> Author: jmolenda
>>> Date: Fri Dec  8 19:06:19 2017
>>> New Revision: 320240
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=320240=rev
>>> Log:
>>> Update PlatformDarwin::GetDeveloperDir to handle the two
>>> most common cases where the Xcode.app bundle puts lldb -
>>> either as a default part of the bundle, or in a toolchain
>>> subdirectory, so the platform subclasses can find files
>>> relative to this directory.
>>> 
>>> Dropped support for handling the case where the lldb
>>> framework was in /Library/PrivateFrameworks.  I think
>>> this was intended to handle the case where lldb is installed
>>> in / (outside the Xcode.app bundle) - but in that case, we
>>> can look in the raw directory file paths to find anything.
>>> 
>>> 
>>> 
>>> Modified:
>>>lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
>>> 
>>> Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
>>> URL: 
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=320240=320239=320240=diff
>>> ==
>>> --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
>>> +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Fri Dec  8 
>>> 19:06:19 2017
>>> @@ -1132,28 +1132,33 @@ bool PlatformDarwin::ARMGetSupportedArch
>>>   return false;
>>> }
>>> 
>>> +// Return a directory path like /Applications/Xcode.app/Contents/Developer
>>> const char *PlatformDarwin::GetDeveloperDirectory() {
>>>   std::lock_guard guard(m_mutex);
>>>   if (m_developer_directory.empty()) {
>>> bool developer_dir_path_valid = false;
>>> char developer_dir_path[PATH_MAX];
>>> FileSpec temp_file_spec;
>>> +
>>> +// Get the lldb framework's file path, and if it exists, truncate some
>>> +// components to only the developer directory path.
>>> if (HostInfo::GetLLDBPath(ePathTypeLLDBShlibDir, temp_file_spec)) {
>>>   if (temp_file_spec.GetPath(developer_dir_path,
>>>  sizeof(developer_dir_path))) {
>>> +// e.g. 
>>> /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework
>>> char *shared_frameworks =
>>> strstr(developer_dir_path, "/SharedFrameworks/LLDB.framework");
>>> if (shared_frameworks) {
>>> -  ::snprintf(shared_frameworks,
>>> - sizeof(developer_dir_path) -
>>> - (shared_frameworks - developer_dir_path),
>>> - "/Developer");
>>> +  shared_frameworks[0] = '\0';  // truncate developer_dir_path at 
>>> this point
>>> +  strncat (developer_dir_path, "/Developer", sizeof 
>>> (developer_dir_path) - 1); // add /Developer on
>>>   developer_dir_path_valid = true;
>>> } else {
>>> -  char *lib_priv_frameworks = strstr(
>>> -  developer_dir_path, 
>>> "/Library/PrivateFrameworks/LLDB.framework");
>>> -  if (lib_priv_frameworks) {
>>> -*lib_priv_frameworks = '\0';
>>> +  // e.g. 
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/iOS11.2.xctoolchain/System/Library/PrivateFrameworks/LLDB.framework
>>> +  char *developer_toolchains =
>>> +strstr(developer_dir_path, "/Contents/Developer/Toolchains/");
>>> +  if (developer_toolchains) {
>>> +developer_toolchains += sizeof ("/Contents/Developer") - 1;
>>> +developer_toolchains[0] = '\0'; // truncate developer_dir_path 
>>> at this point
>>> developer_dir_path_valid = true;
>>>   }
>>> }
>>> 
>>> 
>>> ___
>>> lldb-commits mailing list
>>> lldb-commits@lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
> ___
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

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


Re: [Lldb-commits] [lldb] r320240 - Update PlatformDarwin::GetDeveloperDir to handle the two

2017-12-21 Thread Davide Italiano via lldb-commits
Jason, any chance we can write a test case for this?

--
Davide

On Mon, Dec 11, 2017 at 12:52 AM, Davide Italiano  wrote:
> Testcase?
>
> On Fri, Dec 8, 2017 at 7:06 PM, Jason Molenda via lldb-commits
>  wrote:
>> Author: jmolenda
>> Date: Fri Dec  8 19:06:19 2017
>> New Revision: 320240
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=320240=rev
>> Log:
>> Update PlatformDarwin::GetDeveloperDir to handle the two
>> most common cases where the Xcode.app bundle puts lldb -
>> either as a default part of the bundle, or in a toolchain
>> subdirectory, so the platform subclasses can find files
>> relative to this directory.
>>
>> Dropped support for handling the case where the lldb
>> framework was in /Library/PrivateFrameworks.  I think
>> this was intended to handle the case where lldb is installed
>> in / (outside the Xcode.app bundle) - but in that case, we
>> can look in the raw directory file paths to find anything.
>>
>> 
>>
>> Modified:
>> lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
>>
>> Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=320240=320239=320240=diff
>> ==
>> --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
>> +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Fri Dec  8 
>> 19:06:19 2017
>> @@ -1132,28 +1132,33 @@ bool PlatformDarwin::ARMGetSupportedArch
>>return false;
>>  }
>>
>> +// Return a directory path like /Applications/Xcode.app/Contents/Developer
>>  const char *PlatformDarwin::GetDeveloperDirectory() {
>>std::lock_guard guard(m_mutex);
>>if (m_developer_directory.empty()) {
>>  bool developer_dir_path_valid = false;
>>  char developer_dir_path[PATH_MAX];
>>  FileSpec temp_file_spec;
>> +
>> +// Get the lldb framework's file path, and if it exists, truncate some
>> +// components to only the developer directory path.
>>  if (HostInfo::GetLLDBPath(ePathTypeLLDBShlibDir, temp_file_spec)) {
>>if (temp_file_spec.GetPath(developer_dir_path,
>>   sizeof(developer_dir_path))) {
>> +// e.g. 
>> /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework
>>  char *shared_frameworks =
>>  strstr(developer_dir_path, "/SharedFrameworks/LLDB.framework");
>>  if (shared_frameworks) {
>> -  ::snprintf(shared_frameworks,
>> - sizeof(developer_dir_path) -
>> - (shared_frameworks - developer_dir_path),
>> - "/Developer");
>> +  shared_frameworks[0] = '\0';  // truncate developer_dir_path at 
>> this point
>> +  strncat (developer_dir_path, "/Developer", sizeof 
>> (developer_dir_path) - 1); // add /Developer on
>>developer_dir_path_valid = true;
>>  } else {
>> -  char *lib_priv_frameworks = strstr(
>> -  developer_dir_path, 
>> "/Library/PrivateFrameworks/LLDB.framework");
>> -  if (lib_priv_frameworks) {
>> -*lib_priv_frameworks = '\0';
>> +  // e.g. 
>> /Applications/Xcode.app/Contents/Developer/Toolchains/iOS11.2.xctoolchain/System/Library/PrivateFrameworks/LLDB.framework
>> +  char *developer_toolchains =
>> +strstr(developer_dir_path, "/Contents/Developer/Toolchains/");
>> +  if (developer_toolchains) {
>> +developer_toolchains += sizeof ("/Contents/Developer") - 1;
>> +developer_toolchains[0] = '\0'; // truncate developer_dir_path 
>> at this point
>>  developer_dir_path_valid = true;
>>}
>>  }
>>
>>
>> ___
>> lldb-commits mailing list
>> lldb-commits@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [lldb] r320240 - Update PlatformDarwin::GetDeveloperDir to handle the two

2017-12-10 Thread Davide Italiano via lldb-commits
Testcase?

On Fri, Dec 8, 2017 at 7:06 PM, Jason Molenda via lldb-commits
 wrote:
> Author: jmolenda
> Date: Fri Dec  8 19:06:19 2017
> New Revision: 320240
>
> URL: http://llvm.org/viewvc/llvm-project?rev=320240=rev
> Log:
> Update PlatformDarwin::GetDeveloperDir to handle the two
> most common cases where the Xcode.app bundle puts lldb -
> either as a default part of the bundle, or in a toolchain
> subdirectory, so the platform subclasses can find files
> relative to this directory.
>
> Dropped support for handling the case where the lldb
> framework was in /Library/PrivateFrameworks.  I think
> this was intended to handle the case where lldb is installed
> in / (outside the Xcode.app bundle) - but in that case, we
> can look in the raw directory file paths to find anything.
>
> 
>
> Modified:
> lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
>
> Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=320240=320239=320240=diff
> ==
> --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
> +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Fri Dec  8 
> 19:06:19 2017
> @@ -1132,28 +1132,33 @@ bool PlatformDarwin::ARMGetSupportedArch
>return false;
>  }
>
> +// Return a directory path like /Applications/Xcode.app/Contents/Developer
>  const char *PlatformDarwin::GetDeveloperDirectory() {
>std::lock_guard guard(m_mutex);
>if (m_developer_directory.empty()) {
>  bool developer_dir_path_valid = false;
>  char developer_dir_path[PATH_MAX];
>  FileSpec temp_file_spec;
> +
> +// Get the lldb framework's file path, and if it exists, truncate some
> +// components to only the developer directory path.
>  if (HostInfo::GetLLDBPath(ePathTypeLLDBShlibDir, temp_file_spec)) {
>if (temp_file_spec.GetPath(developer_dir_path,
>   sizeof(developer_dir_path))) {
> +// e.g. 
> /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework
>  char *shared_frameworks =
>  strstr(developer_dir_path, "/SharedFrameworks/LLDB.framework");
>  if (shared_frameworks) {
> -  ::snprintf(shared_frameworks,
> - sizeof(developer_dir_path) -
> - (shared_frameworks - developer_dir_path),
> - "/Developer");
> +  shared_frameworks[0] = '\0';  // truncate developer_dir_path at 
> this point
> +  strncat (developer_dir_path, "/Developer", sizeof 
> (developer_dir_path) - 1); // add /Developer on
>developer_dir_path_valid = true;
>  } else {
> -  char *lib_priv_frameworks = strstr(
> -  developer_dir_path, 
> "/Library/PrivateFrameworks/LLDB.framework");
> -  if (lib_priv_frameworks) {
> -*lib_priv_frameworks = '\0';
> +  // e.g. 
> /Applications/Xcode.app/Contents/Developer/Toolchains/iOS11.2.xctoolchain/System/Library/PrivateFrameworks/LLDB.framework
> +  char *developer_toolchains =
> +strstr(developer_dir_path, "/Contents/Developer/Toolchains/");
> +  if (developer_toolchains) {
> +developer_toolchains += sizeof ("/Contents/Developer") - 1;
> +developer_toolchains[0] = '\0'; // truncate developer_dir_path 
> at this point
>  developer_dir_path_valid = true;
>}
>  }
>
>
> ___
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits