Skip to content

Commit

Permalink
[lldb/Platform] Prepare decouple instance and plugin names
Browse files Browse the repository at this point in the history
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
  • Loading branch information
labath committed Mar 2, 2022
1 parent ea99870 commit d2edca6
Show file tree
Hide file tree
Showing 14 changed files with 32 additions and 42 deletions.
14 changes: 7 additions & 7 deletions lldb/include/lldb/Target/Platform.h
Expand Up @@ -217,7 +217,7 @@ class Platform : public PluginInterface {
llvm::Optional<std::string> GetOSKernelDescription();

// Returns the name of the platform
ConstString GetName();
llvm::StringRef GetName() { return GetPluginName(); }

virtual const char *GetHostname();

Expand Down Expand Up @@ -508,17 +508,17 @@ class Platform : public PluginInterface {

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;
}

Expand Down
2 changes: 1 addition & 1 deletion lldb/source/API/SBPlatform.cpp
Expand Up @@ -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;
}

Expand Down
11 changes: 5 additions & 6 deletions lldb/source/Commands/CommandObjectPlatform.cpp
Expand Up @@ -1281,16 +1281,15 @@ class CommandObjectPlatformProcessList : public CommandObjectParsed {
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);
Expand Down
4 changes: 2 additions & 2 deletions lldb/source/Commands/CommandObjectTarget.cpp
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions lldb/source/Core/IOHandlerCursesGUI.cpp
Expand Up @@ -1609,7 +1609,7 @@ class ChoicesFieldDelegate : public FieldDelegate {
// 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;
Expand All @@ -1634,7 +1634,7 @@ class PlatformPluginFieldDelegate : public ChoicesFieldDelegate {
: 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() {
Expand Down
8 changes: 4 additions & 4 deletions lldb/source/Interpreter/OptionGroupPlatform.cpp
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
}

Expand Down
Expand Up @@ -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);
Expand Down
Expand Up @@ -24,7 +24,7 @@ namespace platform_android {
class PlatformAndroidRemoteGDBServer
: public platform_gdb_server::PlatformRemoteGDBServer {
public:
PlatformAndroidRemoteGDBServer();
using PlatformRemoteGDBServer::PlatformRemoteGDBServer;

~PlatformAndroidRemoteGDBServer() override;

Expand Down
3 changes: 0 additions & 3 deletions lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
Expand Up @@ -24,7 +24,7 @@

class PlatformDarwin : public PlatformPOSIX {
public:
PlatformDarwin(bool is_host);
using PlatformPOSIX::PlatformPOSIX;

~PlatformDarwin() override;

Expand Down
5 changes: 2 additions & 3 deletions lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
Expand Up @@ -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 "
Expand Down
6 changes: 2 additions & 4 deletions lldb/source/Target/Platform.cpp
Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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;
}

Expand Down
9 changes: 4 additions & 5 deletions lldb/source/Target/Process.cpp
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Target/TargetList.cpp
Expand Up @@ -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());
}
}
Expand Down

0 comments on commit d2edca6

Please sign in to comment.