[lldb/Platform] Prepare decouple instance and plugin names

This patch changes the return value of Platform::GetName() to a
StringRef, and uses the opportunity (compile errors) to change some
callsites to use GetPluginName() instead. The two methods still remain
hardwired to return the same thing, but this will change once the ideas
in
<https://discourse.llvm.org/t/multiple-platforms-with-the-same-name/59594>
are implemented.

Differential Revision: https://reviews.llvm.org/D119146
This commit is contained in:
Pavel Labath 2022-02-07 16:21:57 +01:00
parent ea998709eb
commit d2edca6276
14 changed files with 32 additions and 42 deletions

View File

@ -217,7 +217,7 @@ public:
llvm::Optional<std::string> GetOSKernelDescription();
// Returns the name of the platform
ConstString GetName();
llvm::StringRef GetName() { return GetPluginName(); }
virtual const char *GetHostname();
@ -508,17 +508,17 @@ public:
virtual uint64_t ReadFile(lldb::user_id_t fd, uint64_t offset, void *dst,
uint64_t dst_len, Status &error) {
error.SetErrorStringWithFormat(
"Platform::ReadFile() is not supported in the %s platform",
GetName().GetCString());
error.SetErrorStringWithFormatv(
"Platform::ReadFile() is not supported in the {0} platform",
GetPluginName());
return -1;
}
virtual uint64_t WriteFile(lldb::user_id_t fd, uint64_t offset,
const void *src, uint64_t src_len, Status &error) {
error.SetErrorStringWithFormat(
"Platform::WriteFile() is not supported in the %s platform",
GetName().GetCString());
error.SetErrorStringWithFormatv(
"Platform::WriteFile() is not supported in the {0} platform",
GetPluginName());
return -1;
}

View File

@ -342,7 +342,7 @@ const char *SBPlatform::GetName() {
PlatformSP platform_sp(GetSP());
if (platform_sp)
return platform_sp->GetName().GetCString();
return ConstString(platform_sp->GetName()).AsCString();
return nullptr;
}

View File

@ -1281,16 +1281,15 @@ protected:
result.AppendErrorWithFormatv(
"no processes were found that {0} \"{1}\" on the \"{2}\" "
"platform\n",
match_desc, match_name, platform_sp->GetPluginName());
match_desc, match_name, platform_sp->GetName());
else
result.AppendErrorWithFormatv(
"no processes were found on the \"{0}\" platform\n",
platform_sp->GetPluginName());
platform_sp->GetName());
} else {
result.AppendMessageWithFormat(
"%u matching process%s found on \"%s\"", matches,
matches > 1 ? "es were" : " was",
platform_sp->GetName().GetCString());
result.AppendMessageWithFormatv(
"{0} matching process{1} found on \"{2}\"", matches,
matches > 1 ? "es were" : " was", platform_sp->GetName());
if (match_desc)
result.AppendMessageWithFormat(" whose name %s \"%s\"",
match_desc, match_name);

View File

@ -84,8 +84,8 @@ static void DumpTargetInfo(uint32_t target_idx, Target *target,
}
PlatformSP platform_sp(target->GetPlatform());
if (platform_sp)
strm.Printf("%splatform=%s", properties++ > 0 ? ", " : " ( ",
platform_sp->GetName().GetCString());
strm.Format("{0}platform={1}", properties++ > 0 ? ", " : " ( ",
platform_sp->GetName());
ProcessSP process_sp(target->GetProcessSP());
bool show_process_status = false;

View File

@ -1609,7 +1609,7 @@ public:
// Returns the index of the choice.
int GetChoice() { return m_choice; }
void SetChoice(const std::string &choice) {
void SetChoice(llvm::StringRef choice) {
for (int i = 0; i < GetNumberOfChoices(); i++) {
if (choice == m_choices[i]) {
m_choice = i;
@ -1634,7 +1634,7 @@ public:
: ChoicesFieldDelegate("Platform Plugin", 3, GetPossiblePluginNames()) {
PlatformSP platform_sp = debugger.GetPlatformList().GetSelectedPlatform();
if (platform_sp)
SetChoice(platform_sp->GetName().AsCString());
SetChoice(platform_sp->GetPluginName());
}
std::vector<std::string> GetPossiblePluginNames() {

View File

@ -25,9 +25,9 @@ PlatformSP OptionGroupPlatform::CreatePlatformWithOptions(
if (platform_sp) {
if (platform_arch.IsValid() &&
!platform_sp->IsCompatibleArchitecture(arch, false, &platform_arch)) {
error.SetErrorStringWithFormat("platform '%s' doesn't support '%s'",
platform_sp->GetName().GetCString(),
arch.GetTriple().getTriple().c_str());
error.SetErrorStringWithFormatv("platform '{0}' doesn't support '{1}'",
platform_sp->GetPluginName(),
arch.GetTriple().getTriple());
platform_sp.reset();
return platform_sp;
}
@ -122,7 +122,7 @@ bool OptionGroupPlatform::PlatformMatches(
const lldb::PlatformSP &platform_sp) const {
if (platform_sp) {
if (!m_platform_name.empty()) {
if (platform_sp->GetName() != ConstString(m_platform_name.c_str()))
if (platform_sp->GetName() != m_platform_name)
return false;
}

View File

@ -74,8 +74,6 @@ static Status FindUnusedPort(uint16_t &port) {
return error;
}
PlatformAndroidRemoteGDBServer::PlatformAndroidRemoteGDBServer() = default;
PlatformAndroidRemoteGDBServer::~PlatformAndroidRemoteGDBServer() {
for (const auto &it : m_port_forwards)
DeleteForwardPortWithAdb(it.second, m_device_id);

View File

@ -24,7 +24,7 @@ namespace platform_android {
class PlatformAndroidRemoteGDBServer
: public platform_gdb_server::PlatformRemoteGDBServer {
public:
PlatformAndroidRemoteGDBServer();
using PlatformRemoteGDBServer::PlatformRemoteGDBServer;
~PlatformAndroidRemoteGDBServer() override;

View File

@ -48,9 +48,6 @@
using namespace lldb;
using namespace lldb_private;
/// Default Constructor
PlatformDarwin::PlatformDarwin(bool is_host) : PlatformPOSIX(is_host) {}
/// Destructor.
///
/// The destructor is virtual since this class is designed to be

View File

@ -24,7 +24,7 @@
class PlatformDarwin : public PlatformPOSIX {
public:
PlatformDarwin(bool is_host);
using PlatformPOSIX::PlatformPOSIX;
~PlatformDarwin() override;

View File

@ -2404,9 +2404,8 @@ Status ProcessGDBRemote::DoDestroy() {
m_public_state.GetValue() != eStateRunning) {
PlatformSP platform_sp = GetTarget().GetPlatform();
if (platform_sp && platform_sp->GetName() &&
platform_sp->GetName().GetStringRef() ==
PlatformRemoteiOS::GetPluginNameStatic()) {
if (platform_sp && platform_sp->GetPluginName() ==
PlatformRemoteiOS::GetPluginNameStatic()) {
if (m_destroy_tried_resuming) {
if (log)
log->PutCString("ProcessGDBRemote::DoDestroy() - Tried resuming to "

View File

@ -280,7 +280,7 @@ PlatformSP Platform::Find(ConstString name) {
std::lock_guard<std::recursive_mutex> guard(GetPlatformListMutex());
for (const auto &platform_sp : GetPlatformList()) {
if (platform_sp->GetName() == name)
if (platform_sp->GetName() == name.GetStringRef())
return platform_sp;
}
}
@ -786,8 +786,6 @@ Status Platform::SetFilePermissions(const FileSpec &file_spec,
}
}
ConstString Platform::GetName() { return ConstString(GetPluginName()); }
const char *Platform::GetHostname() {
if (IsHost())
return "127.0.0.1";
@ -1728,7 +1726,7 @@ Status Platform::DownloadSymbolFile(const lldb::ModuleSP &module_sp,
FileSpec Platform::GetModuleCacheRoot() {
auto dir_spec = GetGlobalPlatformProperties().GetModuleCacheDirectory();
dir_spec.AppendPathComponent(GetName().AsCString());
dir_spec.AppendPathComponent(GetPluginName());
return dir_spec;
}

View File

@ -2895,11 +2895,10 @@ void Process::CompleteAttach() {
if (platform_sp) {
GetTarget().SetPlatform(platform_sp);
GetTarget().SetArchitecture(platform_arch);
LLDB_LOGF(log,
"Process::%s switching platform to %s and architecture "
"to %s based on info from attach",
__FUNCTION__, platform_sp->GetName().AsCString(""),
platform_arch.GetTriple().getTriple().c_str());
LLDB_LOG(log,
"switching platform to {0} and architecture to {1} based on "
"info from attach",
platform_sp->GetName(), platform_arch.GetTriple().getTriple());
}
} else if (!process_arch.IsValid()) {
ProcessInstanceInfo process_info;

View File

@ -242,7 +242,7 @@ Status TargetList::CreateTargetInternal(
platform_set.end()) {
if (!platform_set.empty())
error_strm.PutCString(", ");
error_strm.PutCString(the_platform_sp->GetName().GetCString());
error_strm.PutCString(the_platform_sp->GetName());
platform_set.insert(the_platform_sp.get());
}
}