1061da546Spatrick //===-- PlatformAndroid.h ---------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_PLATFORM_ANDROID_PLATFORMANDROID_H 10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_PLATFORM_ANDROID_PLATFORMANDROID_H 11061da546Spatrick 12061da546Spatrick #include <memory> 13061da546Spatrick #include <string> 14061da546Spatrick 15061da546Spatrick #include "Plugins/Platform/Linux/PlatformLinux.h" 16061da546Spatrick 17061da546Spatrick #include "AdbClient.h" 18061da546Spatrick 19061da546Spatrick namespace lldb_private { 20061da546Spatrick namespace platform_android { 21061da546Spatrick 22061da546Spatrick class PlatformAndroid : public platform_linux::PlatformLinux { 23061da546Spatrick public: 24061da546Spatrick PlatformAndroid(bool is_host); 25061da546Spatrick 26061da546Spatrick static void Initialize(); 27061da546Spatrick 28061da546Spatrick static void Terminate(); 29061da546Spatrick 30061da546Spatrick // lldb_private::PluginInterface functions 31061da546Spatrick static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch); 32061da546Spatrick GetPluginNameStatic(bool is_host)33*f6aab3d8Srobert static llvm::StringRef GetPluginNameStatic(bool is_host) { 34*f6aab3d8Srobert return is_host ? Platform::GetHostPlatformName() : "remote-android"; 35*f6aab3d8Srobert } 36061da546Spatrick 37*f6aab3d8Srobert static llvm::StringRef GetPluginDescriptionStatic(bool is_host); 38061da546Spatrick GetPluginName()39*f6aab3d8Srobert llvm::StringRef GetPluginName() override { 40*f6aab3d8Srobert return GetPluginNameStatic(IsHost()); 41*f6aab3d8Srobert } 42061da546Spatrick 43061da546Spatrick // lldb_private::Platform functions 44061da546Spatrick 45061da546Spatrick Status ConnectRemote(Args &args) override; 46061da546Spatrick 47061da546Spatrick Status GetFile(const FileSpec &source, const FileSpec &destination) override; 48061da546Spatrick 49061da546Spatrick Status PutFile(const FileSpec &source, const FileSpec &destination, 50061da546Spatrick uint32_t uid = UINT32_MAX, uint32_t gid = UINT32_MAX) override; 51061da546Spatrick 52061da546Spatrick uint32_t GetSdkVersion(); 53061da546Spatrick 54061da546Spatrick bool GetRemoteOSVersion() override; 55061da546Spatrick 56061da546Spatrick Status DisconnectRemote() override; 57061da546Spatrick 58061da546Spatrick uint32_t GetDefaultMemoryCacheLineSize() override; 59061da546Spatrick 60061da546Spatrick protected: 61061da546Spatrick const char *GetCacheHostname() override; 62061da546Spatrick 63061da546Spatrick Status DownloadModuleSlice(const FileSpec &src_file_spec, 64061da546Spatrick const uint64_t src_offset, const uint64_t src_size, 65061da546Spatrick const FileSpec &dst_file_spec) override; 66061da546Spatrick 67061da546Spatrick Status DownloadSymbolFile(const lldb::ModuleSP &module_sp, 68061da546Spatrick const FileSpec &dst_file_spec) override; 69061da546Spatrick 70061da546Spatrick llvm::StringRef 71061da546Spatrick GetLibdlFunctionDeclarations(lldb_private::Process *process) override; 72061da546Spatrick 73061da546Spatrick private: 74061da546Spatrick AdbClient::SyncService *GetSyncService(Status &error); 75061da546Spatrick 76061da546Spatrick std::unique_ptr<AdbClient::SyncService> m_adb_sync_svc; 77061da546Spatrick std::string m_device_id; 78061da546Spatrick uint32_t m_sdk_version; 79061da546Spatrick }; 80061da546Spatrick 81061da546Spatrick } // namespace platofor_android 82061da546Spatrick } // namespace lldb_private 83061da546Spatrick 84dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_PLATFORM_ANDROID_PLATFORMANDROID_H 85