656 changes: 12 additions & 644 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp

Large diffs are not rendered by default.

76 changes: 7 additions & 69 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@

#include "llvm/Support/FileSystem.h"

#include "PlatformDarwin.h"
#include "PlatformRemoteDarwinDevice.h"

class PlatformRemoteAppleTV : public PlatformDarwin {
class PlatformRemoteAppleTV : public PlatformRemoteDarwinDevice {
public:
PlatformRemoteAppleTV();

Expand All @@ -42,9 +42,6 @@ class PlatformRemoteAppleTV : public PlatformDarwin {

static const char *GetDescriptionStatic();

//------------------------------------------------------------
// Class Methods
//------------------------------------------------------------
//------------------------------------------------------------
// lldb_private::PluginInterface functions
//------------------------------------------------------------
Expand All @@ -57,80 +54,21 @@ class PlatformRemoteAppleTV : public PlatformDarwin {
//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------
lldb_private::Error ResolveExecutable(
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr) override;

const char *GetDescription() override { return GetDescriptionStatic(); }

void GetStatus(lldb_private::Stream &strm) override;

virtual lldb_private::Error
GetSymbolFile(const lldb_private::FileSpec &platform_file,
const lldb_private::UUID *uuid_ptr,
lldb_private::FileSpec &local_file);

lldb_private::Error
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
lldb_private::Process *process, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr,
lldb::ModuleSP *old_module_sp_ptr,
bool *did_create_ptr) override;

bool GetSupportedArchitectureAtIndex(uint32_t idx,
lldb_private::ArchSpec &arch) override;

void
AddClangModuleCompilationOptions(lldb_private::Target *target,
std::vector<std::string> &options) override {
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
target, options, PlatformDarwin::SDKType::iPhoneOS);
}

protected:
struct SDKDirectoryInfo {
SDKDirectoryInfo(const lldb_private::FileSpec &sdk_dir_spec);
lldb_private::FileSpec directory;
lldb_private::ConstString build;
uint32_t version_major;
uint32_t version_minor;
uint32_t version_update;
bool user_cached;
};
typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
std::mutex m_sdk_dir_mutex;
SDKDirectoryInfoCollection m_sdk_directory_infos;
std::string m_device_support_directory;
std::string m_device_support_directory_for_os_version;
std::string m_build_update;
uint32_t m_last_module_sdk_idx;
uint32_t m_connected_module_sdk_idx;

bool UpdateSDKDirectoryInfosIfNeeded();

const char *GetDeviceSupportDirectory();

const char *GetDeviceSupportDirectoryForOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForLatestOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForCurrentOSVersion();

static lldb_private::FileSpec::EnumerateDirectoryResult
GetContainedFilesIntoVectorOfStringsCallback(
void *baton, llvm::sys::fs::file_type ft,
const lldb_private::FileSpec &file_spec);

uint32_t FindFileInAllSDKs(const char *platform_file_path,
lldb_private::FileSpecList &file_list);

bool GetFileInSDK(const char *platform_file_path, uint32_t sdk_idx,
lldb_private::FileSpec &local_file);
//------------------------------------------------------------
// lldb_private::PlatformRemoteDarwinDevice functions
//------------------------------------------------------------

uint32_t FindFileInAllSDKs(const lldb_private::FileSpec &platform_file,
lldb_private::FileSpecList &file_list);
void GetDeviceSupportDirectoryNames (std::vector<std::string> &dirnames) override;

uint32_t GetConnectedSDKIndex();
std::string GetPlatformName () override;

private:
DISALLOW_COPY_AND_ASSIGN(PlatformRemoteAppleTV);
Expand Down
666 changes: 14 additions & 652 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp

Large diffs are not rendered by default.

79 changes: 10 additions & 69 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
// Project includes
#include "lldb/Utility/FileSpec.h"

#include "PlatformDarwin.h"
#include "PlatformRemoteDarwinDevice.h"

#include "llvm/Support/FileSystem.h"

class PlatformRemoteAppleWatch : public PlatformDarwin {
class PlatformRemoteAppleWatch : public PlatformRemoteDarwinDevice {
public:
PlatformRemoteAppleWatch();

Expand All @@ -44,9 +44,11 @@ class PlatformRemoteAppleWatch : public PlatformDarwin {
static const char *GetDescriptionStatic();

//------------------------------------------------------------
// Class Methods
// lldb_private::Platform functions
//------------------------------------------------------------

const char *GetDescription() override { return GetDescriptionStatic(); }

//------------------------------------------------------------
// lldb_private::PluginInterface functions
//------------------------------------------------------------
Expand All @@ -59,80 +61,19 @@ class PlatformRemoteAppleWatch : public PlatformDarwin {
//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------
lldb_private::Error ResolveExecutable(
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr) override;

const char *GetDescription() override { return GetDescriptionStatic(); }

void GetStatus(lldb_private::Stream &strm) override;

virtual lldb_private::Error
GetSymbolFile(const lldb_private::FileSpec &platform_file,
const lldb_private::UUID *uuid_ptr,
lldb_private::FileSpec &local_file);

lldb_private::Error
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
lldb_private::Process *process, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr,
lldb::ModuleSP *old_module_sp_ptr,
bool *did_create_ptr) override;

bool GetSupportedArchitectureAtIndex(uint32_t idx,
lldb_private::ArchSpec &arch) override;

void
AddClangModuleCompilationOptions(lldb_private::Target *target,
std::vector<std::string> &options) override {
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
target, options, PlatformDarwin::SDKType::iPhoneOS);
}

protected:
struct SDKDirectoryInfo {
SDKDirectoryInfo(const lldb_private::FileSpec &sdk_dir_spec);
lldb_private::FileSpec directory;
lldb_private::ConstString build;
uint32_t version_major;
uint32_t version_minor;
uint32_t version_update;
bool user_cached;
};
typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
std::mutex m_sdk_dir_mutex;
SDKDirectoryInfoCollection m_sdk_directory_infos;
std::string m_device_support_directory;
std::string m_device_support_directory_for_os_version;
std::string m_build_update;
uint32_t m_last_module_sdk_idx;
uint32_t m_connected_module_sdk_idx;

bool UpdateSDKDirectoryInfosIfNeeded();

const char *GetDeviceSupportDirectory();

const char *GetDeviceSupportDirectoryForOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForLatestOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForCurrentOSVersion();

static lldb_private::FileSpec::EnumerateDirectoryResult
GetContainedFilesIntoVectorOfStringsCallback(
void *baton, llvm::sys::fs::file_type ft,
const lldb_private::FileSpec &file_spec);

uint32_t FindFileInAllSDKs(const char *platform_file_path,
lldb_private::FileSpecList &file_list);

bool GetFileInSDK(const char *platform_file_path, uint32_t sdk_idx,
lldb_private::FileSpec &local_file);
//------------------------------------------------------------
// lldb_private::PlatformRemoteDarwinDevice functions
//------------------------------------------------------------

uint32_t FindFileInAllSDKs(const lldb_private::FileSpec &platform_file,
lldb_private::FileSpecList &file_list);
void GetDeviceSupportDirectoryNames (std::vector<std::string> &dirnames) override;

uint32_t GetConnectedSDKIndex();
std::string GetPlatformName () override;

private:
DISALLOW_COPY_AND_ASSIGN(PlatformRemoteAppleWatch);
Expand Down
712 changes: 712 additions & 0 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteDarwinDevice.cpp

Large diffs are not rendered by default.

118 changes: 118 additions & 0 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteDarwinDevice.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
//===-- PlatformRemoteDarwinDevice.h -------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_PlatformRemoteDarwinDevice_h_
#define liblldb_PlatformRemoteDarwinDevice_h_

// C Includes
// C++ Includes
#include <string>

// Other libraries and framework includes
// Project includes
#include "PlatformDarwin.h"
#include "lldb/Utility/FileSpec.h"

#include "llvm/Support/FileSystem.h"

class PlatformRemoteDarwinDevice : public PlatformDarwin {
public:
PlatformRemoteDarwinDevice();

~PlatformRemoteDarwinDevice() override;

//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------
lldb_private::Error ResolveExecutable(
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr) override;

void GetStatus(lldb_private::Stream &strm) override;

virtual lldb_private::Error
GetSymbolFile(const lldb_private::FileSpec &platform_file,
const lldb_private::UUID *uuid_ptr,
lldb_private::FileSpec &local_file);

lldb_private::Error
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
lldb_private::Process *process, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr,
lldb::ModuleSP *old_module_sp_ptr,
bool *did_create_ptr) override;

void
AddClangModuleCompilationOptions(lldb_private::Target *target,
std::vector<std::string> &options) override {
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
target, options, PlatformDarwin::SDKType::iPhoneOS);
}

protected:
struct SDKDirectoryInfo {
SDKDirectoryInfo(const lldb_private::FileSpec &sdk_dir_spec);
lldb_private::FileSpec directory;
lldb_private::ConstString build;
uint32_t version_major;
uint32_t version_minor;
uint32_t version_update;
bool user_cached;
};

typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;

std::mutex m_sdk_dir_mutex;
SDKDirectoryInfoCollection m_sdk_directory_infos;
std::string m_device_support_directory;
std::string m_device_support_directory_for_os_version;
std::string m_build_update;
uint32_t m_last_module_sdk_idx;
uint32_t m_connected_module_sdk_idx;

bool UpdateSDKDirectoryInfosIfNeeded();

const char *GetDeviceSupportDirectory();

const char *GetDeviceSupportDirectoryForOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForLatestOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForCurrentOSVersion();

static lldb_private::FileSpec::EnumerateDirectoryResult
GetContainedFilesIntoVectorOfStringsCallback(
void *baton, llvm::sys::fs::file_type ft,
const lldb_private::FileSpec &file_spec);

uint32_t FindFileInAllSDKs(const char *platform_file_path,
lldb_private::FileSpecList &file_list);

bool GetFileInSDK(const char *platform_file_path, uint32_t sdk_idx,
lldb_private::FileSpec &local_file);

uint32_t FindFileInAllSDKs(const lldb_private::FileSpec &platform_file,
lldb_private::FileSpecList &file_list);

uint32_t GetConnectedSDKIndex();

// Get index of SDK in SDKDirectoryInfoCollection by its pointer and return
// UINT32_MAX if that SDK not found.
uint32_t GetSDKIndexBySDKDirectoryInfo(const SDKDirectoryInfo *sdk_info);


virtual void GetDeviceSupportDirectoryNames (std::vector<std::string> &dirnames) = 0;

virtual std::string GetPlatformName () = 0;

private:
DISALLOW_COPY_AND_ASSIGN(PlatformRemoteDarwinDevice);
};

#endif // liblldb_PlatformRemoteDarwinDevice_h_
674 changes: 9 additions & 665 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp

Large diffs are not rendered by default.

93 changes: 14 additions & 79 deletions lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@

// Other libraries and framework includes
// Project includes
#include "PlatformDarwin.h"
#include "PlatformRemoteDarwinDevice.h"
#include "lldb/Utility/FileSpec.h"

#include "llvm/Support/FileSystem.h"

class PlatformRemoteiOS : public PlatformDarwin {
class PlatformRemoteiOS : public PlatformRemoteDarwinDevice {
public:
PlatformRemoteiOS();

~PlatformRemoteiOS() override;
~PlatformRemoteiOS() override = default;

//------------------------------------------------------------
// Class Functions
Expand All @@ -41,6 +41,12 @@ class PlatformRemoteiOS : public PlatformDarwin {

static const char *GetDescriptionStatic();

//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------

const char *GetDescription() override { return GetDescriptionStatic(); }

//------------------------------------------------------------
// lldb_private::PluginInterface functions
//------------------------------------------------------------
Expand All @@ -50,89 +56,18 @@ class PlatformRemoteiOS : public PlatformDarwin {

uint32_t GetPluginVersion() override { return 1; }

//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------
lldb_private::Error ResolveExecutable(
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr) override;

const char *GetDescription() override { return GetDescriptionStatic(); }

void GetStatus(lldb_private::Stream &strm) override;

virtual lldb_private::Error
GetSymbolFile(const lldb_private::FileSpec &platform_file,
const lldb_private::UUID *uuid_ptr,
lldb_private::FileSpec &local_file);

lldb_private::Error
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
lldb_private::Process *process, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr,
lldb::ModuleSP *old_module_sp_ptr,
bool *did_create_ptr) override;

bool GetSupportedArchitectureAtIndex(uint32_t idx,
lldb_private::ArchSpec &arch) override;

void
AddClangModuleCompilationOptions(lldb_private::Target *target,
std::vector<std::string> &options) override {
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
target, options, PlatformDarwin::SDKType::iPhoneOS);
}

protected:
struct SDKDirectoryInfo {
SDKDirectoryInfo(const lldb_private::FileSpec &sdk_dir_spec);
lldb_private::FileSpec directory;
lldb_private::ConstString build;
uint32_t version_major;
uint32_t version_minor;
uint32_t version_update;
bool user_cached;
};

typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;

std::mutex m_sdk_dir_mutex;
SDKDirectoryInfoCollection m_sdk_directory_infos;
std::string m_device_support_directory;
std::string m_device_support_directory_for_os_version;
std::string m_build_update;
uint32_t m_last_module_sdk_idx;
uint32_t m_connected_module_sdk_idx;

bool UpdateSDKDirectoryInfosIfNeeded();

const char *GetDeviceSupportDirectory();

const char *GetDeviceSupportDirectoryForOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForLatestOSVersion();

const SDKDirectoryInfo *GetSDKDirectoryForCurrentOSVersion();

static lldb_private::FileSpec::EnumerateDirectoryResult
GetContainedFilesIntoVectorOfStringsCallback(
void *baton, llvm::sys::fs::file_type ft,
const lldb_private::FileSpec &file_spec);

uint32_t FindFileInAllSDKs(const char *platform_file_path,
lldb_private::FileSpecList &file_list);

bool GetFileInSDK(const char *platform_file_path, uint32_t sdk_idx,
lldb_private::FileSpec &local_file);

uint32_t FindFileInAllSDKs(const lldb_private::FileSpec &platform_file,
lldb_private::FileSpecList &file_list);
//------------------------------------------------------------
// lldb_private::PlatformRemoteDarwinDevice functions
//------------------------------------------------------------

uint32_t GetConnectedSDKIndex();
void GetDeviceSupportDirectoryNames (std::vector<std::string> &dirnames) override;

// Get index of SDK in SDKDirectoryInfoCollection by its pointer and return
// UINT32_MAX if that SDK not found.
uint32_t GetSDKIndexBySDKDirectoryInfo(const SDKDirectoryInfo *sdk_info);
std::string GetPlatformName () override;

private:
DISALLOW_COPY_AND_ASSIGN(PlatformRemoteiOS);
Expand Down