[Lldb-commits] [lldb] r216230 - Move the rest of the HostInfo functions over.

Zachary Turner zturner at google.com
Thu Aug 21 16:27:09 PDT 2014


Also, as a matter of convention, you're never supposed to write
HostInfo<specific-host>.  Instead just write HostInfo::GetEffectiveUserID.
 On Mac it will be typedefed to HostInfoMacOSX


On Thu, Aug 21, 2014 at 4:25 PM, Zachary Turner <zturner at google.com> wrote:

> Thanks.  I think I know why this happened, it was because previously
> GetLLDBPath() was calling GetDirectory().SetCString(), now it just calls
> file_spec.SetFile(), which as you mentioned does the directory / filename
> split.  I think the fix is in lldb-gdbserver, to call AppendPathComponent.
>  Can you try that and see if it fixes it?
>
>
> On Thu, Aug 21, 2014 at 4:14 PM, Jason Molenda <jmolenda at apple.com> wrote:
>
>> Hm, I'm seeing two problems trying to build the current sources on Mac OS
>> X.  Did you mean to have a GetFeectiveUserID method in Host or HostInfo?  I
>> needed to do
>>
>> Index: source/Host/macosx/Host.mm
>> ===================================================================
>> --- source/Host/macosx/Host.mm  (revision 216236)
>> +++ source/Host/macosx/Host.mm  (working copy)
>> @@ -1255,7 +1255,7 @@
>>      const char *xpc_service  = nil;
>>      bool send_auth = false;
>>      AuthorizationExternalForm extForm;
>> -    if ((requested_uid == UINT32_MAX) || (requested_uid ==
>> Host::GetEffectiveUserID()))
>> +    if ((requested_uid == UINT32_MAX) || (requested_uid ==
>> HostInfoMacOSX::GetEffectiveUserID()))
>>      {
>>          xpc_service = "com.apple.lldb.launcherXPCService";
>>      }
>> @@ -1392,7 +1392,7 @@
>>
>>  #if !NO_XPC_SERVICES
>>      bool launchingAsRoot = launch_info.GetUserID() == 0;
>> -    bool currentUserIsRoot = Host::GetEffectiveUserID() == 0;
>> +    bool currentUserIsRoot = HostInfoMacOSX::GetEffectiveUserID() == 0;
>>
>>      if (launchingAsRoot && !currentUserIsRoot)
>>      {
>>
>> to get it to compile.
>>
>> A second problem is that I can't attach/launch native processes on Mac OS
>> X, I get
>>
>> error: process launch failed: unable to locate debugserver
>>
>> Previously, it looks like Host::GetLLDBPath would return a FileSpec with
>> a directory like ".../lldb/build/Debug/LLDB.framework/Resources" and no
>> filename.  Then in GDBRemoteCommunication.cpp it sets the filename
>> component -
>>
>>         // The debugserver binary is in the LLDB.framework/Resources
>>         // directory.
>>         if (HostInfo::GetLLDBPath(ePathTypeSupportExecutableDir,
>> debugserver_file_spec))
>>         {
>>
>> debugserver_file_spec.GetFilename().SetCString(DEBUGSERVER_BASENAME);
>>
>>
>> But right now the FileSpec returned by HostInfo::GetLLDBPath has a
>> directory of ".../lldb/build/Debug/LLDB.framework/" and a filename of
>> "Resources" - which gets overwritten by that SetCString() method call.
>>
>> I'm sure the fix is easy but I wanted to mention it on the list in case
>> other people are also seeing this.
>>
>>
>>
>>
>>
>> > On Aug 21, 2014, at 2:49 PM, Zachary Turner <zturner at google.com> wrote:
>> >
>> > 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)
>> >
>> >
>> > _______________________________________________
>> > lldb-commits mailing list
>> > lldb-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140821/ae22e56a/attachment.html>


More information about the lldb-commits mailing list