[Lldb-commits] [lldb] r216230 - Move the rest of the HostInfo functions over.
Zachary Turner
zturner at google.com
Thu Aug 21 14:49:25 PDT 2014
Author: zturner
Date: Thu Aug 21 16:49:24 2014
New Revision: 216230
URL: http://llvm.org/viewvc/llvm-project?rev=216230&view=rev
Log:
Move the rest of the HostInfo functions over.
This should bring HostInfo up to 99% completion. The remainder
of code in Host will be split into instantiatable classes
representing host processes, threads, dynamic libraries, and
process launching strategies.
Modified:
lldb/trunk/include/lldb/Host/Host.h
lldb/trunk/include/lldb/Host/freebsd/HostInfoFreeBSD.h
lldb/trunk/include/lldb/Host/linux/HostInfoLinux.h
lldb/trunk/include/lldb/Host/macosx/HostInfoMacOSX.h
lldb/trunk/include/lldb/Host/posix/HostInfoPosix.h
lldb/trunk/include/lldb/Host/windows/HostInfoWindows.h
lldb/trunk/source/API/SBHostOS.cpp
lldb/trunk/source/Host/common/Host.cpp
lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp
lldb/trunk/source/Host/linux/HostInfoLinux.cpp
lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm
lldb/trunk/source/Host/posix/HostInfoPosix.cpp
lldb/trunk/source/Host/windows/Host.cpp
lldb/trunk/source/Host/windows/HostInfoWindows.cpp
lldb/trunk/source/Interpreter/CommandInterpreter.cpp
Modified: lldb/trunk/include/lldb/Host/Host.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/Host.h (original)
+++ lldb/trunk/include/lldb/Host/Host.h Thu Aug 21 16:49:24 2014
@@ -91,25 +91,6 @@ public:
lldb::pid_t pid,
bool monitor_signals);
- static const char *
- GetUserName (uint32_t uid, std::string &user_name);
-
- static const char *
- GetGroupName (uint32_t gid, std::string &group_name);
-
- static uint32_t
- GetUserID ();
-
- static uint32_t
- GetGroupID ();
-
- static uint32_t
- GetEffectiveUserID ();
-
- static uint32_t
- GetEffectiveGroupID ();
-
-
enum SystemLogType
{
eSystemLogWarning,
@@ -261,27 +242,6 @@ public:
SetShortThreadName (lldb::pid_t pid, lldb::tid_t tid, const char *name, size_t len);
//------------------------------------------------------------------
- /// Gets the FileSpec of the user profile directory. On Posix-platforms
- /// this is ~, and on windows this is generally something like
- /// C:\Users\Alice.
- ///
- /// @return
- /// \b A file spec with the path to the user's home directory.
- //------------------------------------------------------------------
- static FileSpec
- GetUserProfileFileSpec ();
-
- //------------------------------------------------------------------
- /// Gets the FileSpec of the current process (the process that
- /// that is running the LLDB code).
- ///
- /// @return
- /// \b A file spec with the program name.
- //------------------------------------------------------------------
- static FileSpec
- GetProgramFileSpec ();
-
- //------------------------------------------------------------------
/// Given an address in the current process (the process that
/// is running the LLDB code), return the name of the module that
/// it comes from. This can be useful when you need to know the
@@ -298,8 +258,6 @@ public:
//------------------------------------------------------------------
static FileSpec
GetModuleFileSpecForHostAddress (const void *host_addr);
-
-
//------------------------------------------------------------------
/// If you have an executable that is in a bundle and want to get
Modified: lldb/trunk/include/lldb/Host/freebsd/HostInfoFreeBSD.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/freebsd/HostInfoFreeBSD.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/freebsd/HostInfoFreeBSD.h (original)
+++ lldb/trunk/include/lldb/Host/freebsd/HostInfoFreeBSD.h Thu Aug 21 16:49:24 2014
@@ -10,6 +10,7 @@
#ifndef lldb_Host_freebsd_HostInfoFreeBSD_h_
#define lldb_Host_freebsd_HostInfoFreeBSD_h_
+#include "lldb/Host/FileSpec.h"
#include "lldb/Host/posix/HostInfoPosix.h"
namespace lldb_private
@@ -21,6 +22,7 @@ class HostInfoFreeBSD : public HostInfoP
static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update);
static bool GetOSBuildString(std::string &s);
static bool GetOSKernelDescription(std::string &s);
+ static FileSpec GetProgramFileSpec();
};
}
Modified: lldb/trunk/include/lldb/Host/linux/HostInfoLinux.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/linux/HostInfoLinux.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/linux/HostInfoLinux.h (original)
+++ lldb/trunk/include/lldb/Host/linux/HostInfoLinux.h Thu Aug 21 16:49:24 2014
@@ -10,7 +10,9 @@
#ifndef lldb_Host_linux_HostInfoLinux_h_
#define lldb_Host_linux_HostInfoLinux_h_
+#include "lldb/Host/FileSpec.h"
#include "lldb/Host/posix/HostInfoPosix.h"
+
#include "llvm/ADT/StringRef.h"
#include <string>
@@ -32,6 +34,7 @@ class HostInfoLinux : public HostInfoPos
static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update);
static llvm::StringRef GetDistributionId();
+ static FileSpec GetProgramFileSpec();
protected:
static bool ComputeSystemPluginsDirectory(FileSpec &file_spec);
Modified: lldb/trunk/include/lldb/Host/macosx/HostInfoMacOSX.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/macosx/HostInfoMacOSX.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/macosx/HostInfoMacOSX.h (original)
+++ lldb/trunk/include/lldb/Host/macosx/HostInfoMacOSX.h Thu Aug 21 16:49:24 2014
@@ -10,6 +10,7 @@
#ifndef lldb_Host_macosx_HostInfoMacOSX_h_
#define lldb_Host_macosx_HostInfoMacOSX_h_
+#include "lldb/Host/FileSpec.h"
#include "lldb/Host/posix/HostInfoPosix.h"
namespace lldb_private
@@ -30,6 +31,7 @@ class HostInfoMacOSX : public HostInfoPo
static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update);
static bool GetOSBuildString(std::string &s);
static bool GetOSKernelDescription(std::string &s);
+ static FileSpec GetProgramFileSpec();
protected:
static bool ComputeSupportExeDirectory(FileSpec &file_spec);
Modified: lldb/trunk/include/lldb/Host/posix/HostInfoPosix.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/posix/HostInfoPosix.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/posix/HostInfoPosix.h (original)
+++ lldb/trunk/include/lldb/Host/posix/HostInfoPosix.h Thu Aug 21 16:49:24 2014
@@ -25,6 +25,11 @@ class HostInfoPosix : public HostInfoBas
static const char *LookupUserName(uint32_t uid, std::string &user_name);
static const char *LookupGroupName(uint32_t gid, std::string &group_name);
+ static uint32_t GetUserID();
+ static uint32_t GetGroupID();
+ static uint32_t GetEffectiveUserID();
+ static uint32_t GetEffectiveGroupID();
+
protected:
static bool ComputeSupportExeDirectory(FileSpec &file_spec);
static bool ComputeHeaderDirectory(FileSpec &file_spec);
Modified: lldb/trunk/include/lldb/Host/windows/HostInfoWindows.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/windows/HostInfoWindows.h?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/windows/HostInfoWindows.h (original)
+++ lldb/trunk/include/lldb/Host/windows/HostInfoWindows.h Thu Aug 21 16:49:24 2014
@@ -11,6 +11,7 @@
#define lldb_Host_windows_HostInfoWindows_h_
#include "lldb/Host/HostInfoBase.h"
+#include "lldb/Host/FileSpec.h"
namespace lldb_private
{
@@ -31,9 +32,13 @@ class HostInfoWindows : public HostInfoB
static bool GetOSBuildString(std::string &s);
static bool GetOSKernelDescription(std::string &s);
static bool GetHostname(std::string &s);
+ static FileSpec GetProgramFileSpec();
protected:
static bool ComputePythonDirectory(FileSpec &file_spec);
+
+ private:
+ static FileSpec m_program_filespec;
};
}
Modified: lldb/trunk/source/API/SBHostOS.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBHostOS.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/API/SBHostOS.cpp (original)
+++ lldb/trunk/source/API/SBHostOS.cpp Thu Aug 21 16:49:24 2014
@@ -23,7 +23,7 @@ SBFileSpec
SBHostOS::GetProgramFileSpec ()
{
SBFileSpec sb_filespec;
- sb_filespec.SetFileSpec (Host::GetProgramFileSpec ());
+ sb_filespec.SetFileSpec(HostInfo::GetProgramFileSpec());
return sb_filespec;
}
Modified: lldb/trunk/source/Host/common/Host.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Host.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/Host.cpp (original)
+++ lldb/trunk/source/Host/common/Host.cpp Thu Aug 21 16:49:24 2014
@@ -646,68 +646,6 @@ Host::SetShortThreadName (lldb::pid_t pi
#endif
-FileSpec
-Host::GetUserProfileFileSpec ()
-{
- static FileSpec g_profile_filespec;
- if (!g_profile_filespec)
- {
- llvm::SmallString<64> path;
- llvm::sys::path::home_directory(path);
- return FileSpec(path.c_str(), false);
- }
- return g_profile_filespec;
-}
-
-FileSpec
-Host::GetProgramFileSpec ()
-{
- static FileSpec g_program_filespec;
- if (!g_program_filespec)
- {
-#if defined (__APPLE__)
- char program_fullpath[PATH_MAX];
- // If DST is NULL, then return the number of bytes needed.
- uint32_t len = sizeof(program_fullpath);
- int err = _NSGetExecutablePath (program_fullpath, &len);
- if (err == 0)
- g_program_filespec.SetFile (program_fullpath, false);
- else if (err == -1)
- {
- char *large_program_fullpath = (char *)::malloc (len + 1);
-
- err = _NSGetExecutablePath (large_program_fullpath, &len);
- if (err == 0)
- g_program_filespec.SetFile (large_program_fullpath, false);
-
- ::free (large_program_fullpath);
- }
-#elif defined (__linux__)
- char exe_path[PATH_MAX];
- ssize_t len = readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1);
- if (len > 0) {
- exe_path[len] = 0;
- g_program_filespec.SetFile(exe_path, false);
- }
-#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
- int exe_path_mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, getpid() };
- size_t exe_path_size;
- if (sysctl(exe_path_mib, 4, NULL, &exe_path_size, NULL, 0) == 0)
- {
- char *exe_path = new char[exe_path_size];
- if (sysctl(exe_path_mib, 4, exe_path, &exe_path_size, NULL, 0) == 0)
- g_program_filespec.SetFile(exe_path, false);
- delete[] exe_path;
- }
-#elif defined(_WIN32)
- std::vector<char> buffer(PATH_MAX);
- ::GetModuleFileName(NULL, &buffer[0], buffer.size());
- g_program_filespec.SetFile(&buffer[0], false);
-#endif
- }
- return g_program_filespec;
-}
-
#if !defined (__APPLE__) // see Host.mm
bool
@@ -864,34 +802,6 @@ Host::GetModuleFileSpecForHostAddress (c
}
#endif
-
-#ifndef _WIN32
-
-uint32_t
-Host::GetUserID ()
-{
- return getuid();
-}
-
-uint32_t
-Host::GetGroupID ()
-{
- return getgid();
-}
-
-uint32_t
-Host::GetEffectiveUserID ()
-{
- return geteuid();
-}
-
-uint32_t
-Host::GetEffectiveGroupID ()
-{
- return getegid();
-}
-
-#endif
#if !defined(__linux__)
bool
Modified: lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp (original)
+++ lldb/trunk/source/Host/freebsd/HostInfoFreeBSD.cpp Thu Aug 21 16:49:24 2014
@@ -64,3 +64,22 @@ HostInfoFreeBSD::GetOSKernelDescription(
return true;
}
+
+FileSpec
+HostInfoFreeBSD::GetProgramFileSpec()
+{
+ static FileSpec g_program_filespec;
+ if (!g_program_filespec)
+ {
+ int exe_path_mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, getpid()};
+ size_t exe_path_size;
+ if (sysctl(exe_path_mib, 4, NULL, &exe_path_size, NULL, 0) == 0)
+ {
+ char *exe_path = new char[exe_path_size];
+ if (sysctl(exe_path_mib, 4, exe_path, &exe_path_size, NULL, 0) == 0)
+ g_program_filespec.SetFile(exe_path, false);
+ delete[] exe_path;
+ }
+ }
+ return g_program_filespec;
+}
\ No newline at end of file
Modified: lldb/trunk/source/Host/linux/HostInfoLinux.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/linux/HostInfoLinux.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/linux/HostInfoLinux.cpp (original)
+++ lldb/trunk/source/Host/linux/HostInfoLinux.cpp Thu Aug 21 16:49:24 2014
@@ -172,6 +172,25 @@ HostInfoLinux::GetDistributionId()
return g_fields->m_distribution_id.c_str();
}
+FileSpec
+HostInfoLinux::GetProgramFileSpec()
+{
+ static FileSpec g_program_filespec;
+
+ if (!g_program_filespec)
+ {
+ char exe_path[PATH_MAX];
+ ssize_t len = readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1);
+ if (len > 0)
+ {
+ exe_path[len] = 0;
+ g_program_filespec.SetFile(exe_path, false);
+ }
+ }
+
+ return g_program_filespec;
+}
+
bool
HostInfoLinux::ComputeSystemPluginsDirectory(FileSpec &file_spec)
{
Modified: lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm (original)
+++ lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm Thu Aug 21 16:49:24 2014
@@ -27,6 +27,7 @@
// Objective C/C++ includes
#include <CoreFoundation/CoreFoundation.h>
#include <Foundation/Foundation.h>
+#include <mach-o/dyld.h>
#include <objc/objc-auto.h>
using namespace lldb_private;
@@ -91,6 +92,32 @@ HostInfoMacOSX::GetOSVersion(uint32_t &m
return false;
}
+FileSpec
+HostInfoMacOSX::GetProgramFileSpec()
+{
+ static FileSpec g_program_filespec;
+ if (!g_program_filespec)
+ {
+ char program_fullpath[PATH_MAX];
+ // If DST is NULL, then return the number of bytes needed.
+ uint32_t len = sizeof(program_fullpath);
+ int err = _NSGetExecutablePath(program_fullpath, &len);
+ if (err == 0)
+ g_program_filespec.SetFile(program_fullpath, false);
+ else if (err == -1)
+ {
+ char *large_program_fullpath = (char *)::malloc(len + 1);
+
+ err = _NSGetExecutablePath(large_program_fullpath, &len);
+ if (err == 0)
+ g_program_filespec.SetFile(large_program_fullpath, false);
+
+ ::free(large_program_fullpath);
+ }
+ }
+ return g_program_filespec;
+}
+
bool
HostInfoMacOSX::ComputeSupportExeDirectory(FileSpec &file_spec)
{
Modified: lldb/trunk/source/Host/posix/HostInfoPosix.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/posix/HostInfoPosix.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/posix/HostInfoPosix.cpp (original)
+++ lldb/trunk/source/Host/posix/HostInfoPosix.cpp Thu Aug 21 16:49:24 2014
@@ -97,6 +97,30 @@ HostInfoPosix::LookupGroupName(uint32_t
return NULL;
}
+uint32_t
+HostInfoPosix::GetUserID()
+{
+ return getuid();
+}
+
+uint32_t
+HostInfoPosix::GetGroupID()
+{
+ return getgid();
+}
+
+uint32_t
+HostInfoPosix::GetEffectiveUserID()
+{
+ return geteuid();
+}
+
+uint32_t
+HostInfoPosix::GetEffectiveGroupID()
+{
+ return getegid();
+}
+
bool
HostInfoPosix::ComputeSupportExeDirectory(FileSpec &file_spec)
{
Modified: lldb/trunk/source/Host/windows/Host.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/Host.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/windows/Host.cpp (original)
+++ lldb/trunk/source/Host/windows/Host.cpp Thu Aug 21 16:49:24 2014
@@ -236,33 +236,6 @@ Host::DynamicLibraryGetSymbol(void *opaq
}
uint32_t
-Host::GetUserID ()
-{
- llvm_unreachable("Windows does not support uid");
-}
-
-uint32_t
-Host::GetGroupID ()
-{
- llvm_unreachable("Windows does not support gid");
- return 0;
-}
-
-uint32_t
-Host::GetEffectiveUserID ()
-{
- llvm_unreachable("Windows does not support euid");
- return 0;
-}
-
-uint32_t
-Host::GetEffectiveGroupID ()
-{
- llvm_unreachable("Windows does not support egid");
- return 0;
-}
-
-uint32_t
Host::FindProcesses (const ProcessInstanceInfoMatch &match_info, ProcessInstanceInfoList &process_infos)
{
process_infos.Clear();
Modified: lldb/trunk/source/Host/windows/HostInfoWindows.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/HostInfoWindows.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Host/windows/HostInfoWindows.cpp (original)
+++ lldb/trunk/source/Host/windows/HostInfoWindows.cpp Thu Aug 21 16:49:24 2014
@@ -15,6 +15,8 @@
using namespace lldb_private;
+FileSpec HostInfoWindows::m_program_filespec;
+
size_t
HostInfoWindows::GetPageSize()
{
@@ -79,6 +81,21 @@ HostInfoWindows::GetHostname(std::string
return true;
}
+FileSpec
+HostInfoWindows::GetProgramFileSpec()
+{
+ static bool is_initialized = false;
+ if (!is_initialized)
+ {
+ is_initialized = true;
+
+ std::vector<char> buffer(PATH_MAX);
+ ::GetModuleFileName(NULL, &buffer[0], buffer.size());
+ m_program_filespec.SetFile(&buffer[0], false);
+ }
+ return m_program_filespec;
+}
+
bool
HostInfoWindows::ComputePythonDirectory(FileSpec &file_spec)
{
Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=216230&r1=216229&r2=216230&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Thu Aug 21 16:49:24 2014
@@ -51,6 +51,7 @@
#include "lldb/Host/Editline.h"
#include "lldb/Host/Host.h"
+#include "lldb/Host/HostInfo.h"
#include "lldb/Interpreter/Args.h"
#include "lldb/Interpreter/CommandCompletions.h"
@@ -67,7 +68,9 @@
#include "lldb/Utility/CleanUp.h"
+#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/STLExtras.h"
+#include "llvm/Support/Path.h"
using namespace lldb;
using namespace lldb_private;
@@ -2381,13 +2384,15 @@ CommandInterpreter::SourceInitFile (bool
// "-" and the name of the program. If this file doesn't exist, we fall
// back to just the "~/.lldbinit" file. We also obey any requests to not
// load the init files.
- FileSpec profilePath = Host::GetUserProfileFileSpec();
+ llvm::SmallString<64> home_dir_path;
+ llvm::sys::path::home_directory(home_dir_path);
+ FileSpec profilePath(home_dir_path.c_str(), false);
profilePath.AppendPathComponent(".lldbinit");
std::string init_file_path = profilePath.GetPath();
if (m_skip_app_init_files == false)
{
- FileSpec program_file_spec (Host::GetProgramFileSpec());
+ FileSpec program_file_spec(HostInfo::GetProgramFileSpec());
const char *program_name = program_file_spec.GetFilename().AsCString();
if (program_name)
More information about the lldb-commits
mailing list