[Lldb-commits] [lldb] r374030 - Revert "[lldb-server/android] Show more processes and package name when necessary"
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 8 02:05:31 PDT 2019
Author: labath
Date: Tue Oct 8 02:05:31 2019
New Revision: 374030
URL: http://llvm.org/viewvc/llvm-project?rev=374030&view=rev
Log:
Revert "[lldb-server/android] Show more processes and package name when necessary"
This reverts r373758 because it causes several to test to be flaky (=
failing ~90% of the time) on linux.
Modified:
lldb/trunk/source/Host/linux/Host.cpp
Modified: lldb/trunk/source/Host/linux/Host.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/linux/Host.cpp?rev=374030&r1=374029&r2=374030&view=diff
==============================================================================
--- lldb/trunk/source/Host/linux/Host.cpp (original)
+++ lldb/trunk/source/Host/linux/Host.cpp Tue Oct 8 02:05:31 2019
@@ -144,79 +144,68 @@ static ArchSpec GetELFProcessCPUType(llv
}
}
-static void GetProcessArgs(::pid_t pid, ProcessInstanceInfo &process_info) {
- auto BufferOrError = getProcFile(pid, "cmdline");
- if (!BufferOrError)
- return;
- std::unique_ptr<llvm::MemoryBuffer> Cmdline = std::move(*BufferOrError);
-
- llvm::StringRef Arg0, Rest;
- std::tie(Arg0, Rest) = Cmdline->getBuffer().split('\0');
- process_info.SetArg0(Arg0);
- while (!Rest.empty()) {
- llvm::StringRef Arg;
- std::tie(Arg, Rest) = Rest.split('\0');
- process_info.GetArguments().AppendArgument(Arg);
- }
-}
+static bool GetProcessAndStatInfo(::pid_t pid,
+ ProcessInstanceInfo &process_info,
+ ProcessState &State, ::pid_t &tracerpid) {
+ tracerpid = 0;
+ process_info.Clear();
-static void GetExePathAndArch(::pid_t pid, ProcessInstanceInfo &process_info) {
Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
- std::string ExePath(PATH_MAX, '\0');
// We can't use getProcFile here because proc/[pid]/exe is a symbolic link.
llvm::SmallString<64> ProcExe;
(llvm::Twine("/proc/") + llvm::Twine(pid) + "/exe").toVector(ProcExe);
+ std::string ExePath(PATH_MAX, '\0');
ssize_t len = readlink(ProcExe.c_str(), &ExePath[0], PATH_MAX);
- if (len > 0) {
- ExePath.resize(len);
- } else {
+ if (len <= 0) {
LLDB_LOG(log, "failed to read link exe link for {0}: {1}", pid,
Status(errno, eErrorTypePOSIX));
- ExePath.resize(0);
+ return false;
}
+ ExePath.resize(len);
+
// If the binary has been deleted, the link name has " (deleted)" appended.
// Remove if there.
llvm::StringRef PathRef = ExePath;
PathRef.consume_back(" (deleted)");
- if (!PathRef.empty()) {
- process_info.GetExecutableFile().SetFile(PathRef, FileSpec::Style::native);
- process_info.SetArchitecture(GetELFProcessCPUType(PathRef));
- }
-}
+ process_info.SetArchitecture(GetELFProcessCPUType(PathRef));
-static void GetProcessEnviron(::pid_t pid, ProcessInstanceInfo &process_info) {
// Get the process environment.
auto BufferOrError = getProcFile(pid, "environ");
if (!BufferOrError)
- return;
-
+ return false;
std::unique_ptr<llvm::MemoryBuffer> Environ = std::move(*BufferOrError);
+
+ // Get the command line used to start the process.
+ BufferOrError = getProcFile(pid, "cmdline");
+ if (!BufferOrError)
+ return false;
+ std::unique_ptr<llvm::MemoryBuffer> Cmdline = std::move(*BufferOrError);
+
+ // Get User and Group IDs and get tracer pid.
+ if (!GetStatusInfo(pid, process_info, State, tracerpid))
+ return false;
+
+ process_info.SetProcessID(pid);
+ process_info.GetExecutableFile().SetFile(PathRef, FileSpec::Style::native);
+
llvm::StringRef Rest = Environ->getBuffer();
while (!Rest.empty()) {
llvm::StringRef Var;
std::tie(Var, Rest) = Rest.split('\0');
process_info.GetEnvironment().insert(Var);
}
-}
-
-static bool GetProcessAndStatInfo(::pid_t pid,
- ProcessInstanceInfo &process_info,
- ProcessState &State, ::pid_t &tracerpid) {
- tracerpid = 0;
- process_info.Clear();
- process_info.SetProcessID(pid);
-
- GetExePathAndArch(pid, process_info);
- GetProcessArgs(pid, process_info);
- GetProcessEnviron(pid, process_info);
-
- // Get User and Group IDs and get tracer pid.
- if (!GetStatusInfo(pid, process_info, State, tracerpid))
- return false;
+ llvm::StringRef Arg0;
+ std::tie(Arg0, Rest) = Cmdline->getBuffer().split('\0');
+ process_info.SetArg0(Arg0);
+ while (!Rest.empty()) {
+ llvm::StringRef Arg;
+ std::tie(Arg, Rest) = Rest.split('\0');
+ process_info.GetArguments().AppendArgument(Arg);
+ }
return true;
}
More information about the lldb-commits
mailing list