Files
clang-p2996/lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h
Pavel Labath 463863fffe [lldb] Move PlatformPOSIX::ConnectToWaitingProcesses to RemoteAwarePlatform
The functionality is not posix specific. Also force the usage of the
gdb-remote process plugin in the gdb platform class.

This is not sufficient to make TestPlatformConnect pass on windows (it
seems it suffers from module loading issues, unrelated to this test),
but it at least makes it shut down correctly, so I change the skip to an
xfail.
2021-03-14 22:43:52 +01:00

106 lines
4.3 KiB
C++

//===-- PlatformPOSIX.h -----------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H
#define LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H
#include <map>
#include <memory>
#include "lldb/Interpreter/Options.h"
#include "lldb/Target/RemoteAwarePlatform.h"
class PlatformPOSIX : public lldb_private::RemoteAwarePlatform {
public:
PlatformPOSIX(bool is_host);
~PlatformPOSIX() override;
// lldb_private::Platform functions
lldb_private::OptionGroupOptions *
GetConnectionOptions(lldb_private::CommandInterpreter &interpreter) override;
lldb_private::Status PutFile(const lldb_private::FileSpec &source,
const lldb_private::FileSpec &destination,
uint32_t uid = UINT32_MAX,
uint32_t gid = UINT32_MAX) override;
lldb_private::Status
GetFile(const lldb_private::FileSpec &source,
const lldb_private::FileSpec &destination) override;
const lldb::UnixSignalsSP &GetRemoteUnixSignals() override;
lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info,
lldb_private::Debugger &debugger,
lldb_private::Target *target, // Can be nullptr, if
// nullptr create a new
// target, else use
// existing one
lldb_private::Status &error) override;
lldb::ProcessSP DebugProcess(lldb_private::ProcessLaunchInfo &launch_info,
lldb_private::Debugger &debugger,
lldb_private::Target *target, // Can be nullptr,
// if nullptr
// create a new
// target, else use
// existing one
lldb_private::Status &error) override;
std::string GetPlatformSpecificConnectionInformation() override;
void CalculateTrapHandlerSymbolNames() override;
lldb_private::Status ConnectRemote(lldb_private::Args &args) override;
lldb_private::Status DisconnectRemote() override;
uint32_t DoLoadImage(lldb_private::Process *process,
const lldb_private::FileSpec &remote_file,
const std::vector<std::string> *paths,
lldb_private::Status &error,
lldb_private::FileSpec *loaded_image) override;
lldb_private::Status UnloadImage(lldb_private::Process *process,
uint32_t image_token) override;
lldb_private::ConstString GetFullNameForDylib(lldb_private::ConstString basename) override;
protected:
std::unique_ptr<lldb_private::OptionGroupPlatformRSync>
m_option_group_platform_rsync;
std::unique_ptr<lldb_private::OptionGroupPlatformSSH>
m_option_group_platform_ssh;
std::unique_ptr<lldb_private::OptionGroupPlatformCaching>
m_option_group_platform_caching;
std::map<lldb_private::CommandInterpreter *,
std::unique_ptr<lldb_private::OptionGroupOptions>>
m_options;
lldb_private::Status
EvaluateLibdlExpression(lldb_private::Process *process, const char *expr_cstr,
llvm::StringRef expr_prefix,
lldb::ValueObjectSP &result_valobj_sp);
std::unique_ptr<lldb_private::UtilityFunction>
MakeLoadImageUtilityFunction(lldb_private::ExecutionContext &exe_ctx,
lldb_private::Status &error);
virtual
llvm::StringRef GetLibdlFunctionDeclarations(lldb_private::Process *process);
private:
PlatformPOSIX(const PlatformPOSIX &) = delete;
const PlatformPOSIX &operator=(const PlatformPOSIX &) = delete;
};
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H