summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/RemoteAwarePlatform.cpp
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-03-04 18:48:00 +0000
committerPavel Labath <pavel@labath.sk>2019-03-04 18:48:00 +0000
commitaa51e6a68375d156992bc9a85f238a2ab3745b68 (patch)
tree30e0ab93f4216ace62054df0df327453c9ce59d3 /lldb/source/Target/RemoteAwarePlatform.cpp
parentac8d1b7017ffe6a6dbccde98f888d8869a4ceb50 (diff)
downloadbcm5719-llvm-aa51e6a68375d156992bc9a85f238a2ab3745b68.tar.gz
bcm5719-llvm-aa51e6a68375d156992bc9a85f238a2ab3745b68.zip
Refactor user/group name resolving code
Summary: This creates an abstract base class called "UserIDResolver", which can be implemented to provide user/group ID resolution capabilities for various objects. Posix host implement a PosixUserIDResolver, which does that using posix apis (getpwuid and friends). PlatformGDBRemote forwards queries over the gdb-remote link, etc. ProcessInstanceInfo class is refactored to make use of this interface instead of taking a platform pointer as an argument. The base resolver class already implements caching and thread-safety, so implementations don't have to worry about that. The main motivating factor for this was to remove external dependencies from the ProcessInstanceInfo class (so it can be put next to ProcessLaunchInfo and friends), but it has other benefits too: - ability to test the user name caching code - ability to test ProcessInstanceInfo dumping code - consistent interface for user/group resolution between Platform and Host classes. Reviewers: zturner, clayborg, jingham Subscribers: mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D58167 llvm-svn: 355323
Diffstat (limited to 'lldb/source/Target/RemoteAwarePlatform.cpp')
-rw-r--r--lldb/source/Target/RemoteAwarePlatform.cpp26
1 files changed, 7 insertions, 19 deletions
diff --git a/lldb/source/Target/RemoteAwarePlatform.cpp b/lldb/source/Target/RemoteAwarePlatform.cpp
index 04cb6cedccf..1704e1533e9 100644
--- a/lldb/source/Target/RemoteAwarePlatform.cpp
+++ b/lldb/source/Target/RemoteAwarePlatform.cpp
@@ -10,6 +10,7 @@
#include "lldb/Host/FileCache.h"
#include "lldb/Host/FileSystem.h"
#include "lldb/Host/Host.h"
+#include "lldb/Host/HostInfo.h"
using namespace lldb_private;
@@ -204,25 +205,12 @@ const char *RemoteAwarePlatform::GetHostname() {
return nullptr;
}
-const char *RemoteAwarePlatform::GetUserName(uint32_t uid) {
- // Check the cache in Platform in case we have already looked this uid up
- const char *user_name = Platform::GetUserName(uid);
- if (user_name)
- return user_name;
-
- if (IsRemote() && m_remote_platform_sp)
- return m_remote_platform_sp->GetUserName(uid);
- return nullptr;
-}
-
-const char *RemoteAwarePlatform::GetGroupName(uint32_t gid) {
- const char *group_name = Platform::GetGroupName(gid);
- if (group_name)
- return group_name;
-
- if (IsRemote() && m_remote_platform_sp)
- return m_remote_platform_sp->GetGroupName(gid);
- return nullptr;
+UserIDResolver &RemoteAwarePlatform::GetUserIDResolver() {
+ if (IsHost())
+ return HostInfo::GetUserIDResolver();
+ if (m_remote_platform_sp)
+ return m_remote_platform_sp->GetUserIDResolver();
+ return UserIDResolver::GetNoopResolver();
}
Environment RemoteAwarePlatform::GetEnvironment() {
OpenPOWER on IntegriCloud