labath created this revision. labath added reviewers: mgorny, teemperor. Herald added a subscriber: emaste. labath requested review of this revision. Herald added a project: LLDB.
Replace bool+by-ref argument with llvm::Optional, and move the common implementation into HostInfoPOSIX. Based on my (simple) experiment, the uname and the sysctl approach return the same value on MacOS, so there's no need for a mac-specific implementation of this functionality. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D112457 Files: lldb/include/lldb/Host/freebsd/HostInfoFreeBSD.h lldb/include/lldb/Host/linux/HostInfoLinux.h lldb/include/lldb/Host/macosx/HostInfoMacOSX.h lldb/include/lldb/Host/netbsd/HostInfoNetBSD.h lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h lldb/include/lldb/Host/posix/HostInfoPosix.h lldb/include/lldb/Host/windows/HostInfoWindows.h lldb/source/Host/freebsd/HostInfoFreeBSD.cpp lldb/source/Host/linux/HostInfoLinux.cpp lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm lldb/source/Host/netbsd/HostInfoNetBSD.cpp lldb/source/Host/openbsd/HostInfoOpenBSD.cpp lldb/source/Host/windows/HostInfoWindows.cpp lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp lldb/source/Target/Platform.cpp
Index: lldb/source/Target/Platform.cpp =================================================================== --- lldb/source/Target/Platform.cpp +++ lldb/source/Target/Platform.cpp @@ -493,8 +493,11 @@ } bool Platform::GetOSKernelDescription(std::string &s) { - if (IsHost()) - return HostInfo::GetOSKernelDescription(s); + if (IsHost()) { + llvm::Optional<std::string> desc = HostInfo::GetOSKernelDescription(); + s = desc.getValueOr(""); + return desc.hasValue(); + } return GetRemoteOSKernelDescription(s); } Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp +++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp @@ -272,13 +272,13 @@ response.PutStringAsRawHex8(*s); response.PutChar(';'); } - std::string s; - if (HostInfo::GetOSKernelDescription(s)) { + if (llvm::Optional<std::string> s = HostInfo::GetOSKernelDescription()) { response.PutCString("os_kernel:"); - response.PutStringAsRawHex8(s); + response.PutStringAsRawHex8(*s); response.PutChar(';'); } + std::string s; #if defined(__APPLE__) #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) Index: lldb/source/Host/windows/HostInfoWindows.cpp =================================================================== --- lldb/source/Host/windows/HostInfoWindows.cpp +++ lldb/source/Host/windows/HostInfoWindows.cpp @@ -82,10 +82,8 @@ return "Windows NT " + version.getAsString(); } -bool HostInfoWindows::GetOSKernelDescription(std::string &s) { - llvm::Optional<std::string> build = GetOSBuildString(); - s = build.getValueOr(""); - return build.hasValue(); +llvm::Optional<std::string> HostInfoWindows::GetOSKernelDescription() { + return GetOSBuildString(); } bool HostInfoWindows::GetHostname(std::string &s) { Index: lldb/source/Host/openbsd/HostInfoOpenBSD.cpp =================================================================== --- lldb/source/Host/openbsd/HostInfoOpenBSD.cpp +++ lldb/source/Host/openbsd/HostInfoOpenBSD.cpp @@ -41,20 +41,6 @@ return llvm::None; } -bool HostInfoOpenBSD::GetOSKernelDescription(std::string &s) { - struct utsname un; - - ::memset(&un, 0, sizeof(utsname)); - s.clear(); - - if (uname(&un) < 0) - return false; - - s.assign(un.version); - - return true; -} - FileSpec HostInfoOpenBSD::GetProgramFileSpec() { static FileSpec g_program_filespec; return g_program_filespec; Index: lldb/source/Host/netbsd/HostInfoNetBSD.cpp =================================================================== --- lldb/source/Host/netbsd/HostInfoNetBSD.cpp +++ lldb/source/Host/netbsd/HostInfoNetBSD.cpp @@ -54,20 +54,6 @@ return llvm::None; } -bool HostInfoNetBSD::GetOSKernelDescription(std::string &s) { - struct utsname un; - - ::memset(&un, 0, sizeof(un)); - s.clear(); - - if (::uname(&un) < 0) - return false; - - s.assign(un.version); - - return true; -} - FileSpec HostInfoNetBSD::GetProgramFileSpec() { static FileSpec g_program_filespec; Index: lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm =================================================================== --- lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm +++ lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm @@ -65,18 +65,6 @@ return llvm::None; } -bool HostInfoMacOSX::GetOSKernelDescription(std::string &s) { - int mib[2] = {CTL_KERN, KERN_VERSION}; - char cstr[PATH_MAX]; - size_t cstr_len = sizeof(cstr); - if (::sysctl(mib, 2, cstr, &cstr_len, NULL, 0) == 0) { - s.assign(cstr, cstr_len); - return true; - } - s.clear(); - return false; -} - static void ParseOSVersion(llvm::VersionTuple &version, NSString *Key) { @autoreleasepool { NSDictionary *version_info = Index: lldb/source/Host/linux/HostInfoLinux.cpp =================================================================== --- lldb/source/Host/linux/HostInfoLinux.cpp +++ lldb/source/Host/linux/HostInfoLinux.cpp @@ -75,19 +75,6 @@ return std::string(un.release); } -bool HostInfoLinux::GetOSKernelDescription(std::string &s) { - struct utsname un; - - ::memset(&un, 0, sizeof(utsname)); - s.clear(); - - if (uname(&un) < 0) - return false; - - s.assign(un.version); - return true; -} - llvm::StringRef HostInfoLinux::GetDistributionId() { assert(g_fields && "Missing call to Initialize?"); // Try to run 'lbs_release -i', and use that response for the distribution Index: lldb/source/Host/freebsd/HostInfoFreeBSD.cpp =================================================================== --- lldb/source/Host/freebsd/HostInfoFreeBSD.cpp +++ lldb/source/Host/freebsd/HostInfoFreeBSD.cpp @@ -41,20 +41,6 @@ return llvm::None; } -bool HostInfoFreeBSD::GetOSKernelDescription(std::string &s) { - struct utsname un; - - ::memset(&un, 0, sizeof(utsname)); - s.clear(); - - if (uname(&un) < 0) - return false; - - s.assign(un.version); - - return true; -} - FileSpec HostInfoFreeBSD::GetProgramFileSpec() { static FileSpec g_program_filespec; if (!g_program_filespec) { Index: lldb/include/lldb/Host/windows/HostInfoWindows.h =================================================================== --- lldb/include/lldb/Host/windows/HostInfoWindows.h +++ lldb/include/lldb/Host/windows/HostInfoWindows.h @@ -28,7 +28,7 @@ static llvm::VersionTuple GetOSVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); + static llvm::Optional<std::string> GetOSKernelDescription(); static bool GetHostname(std::string &s); static FileSpec GetProgramFileSpec(); static FileSpec GetDefaultShell(); Index: lldb/include/lldb/Host/posix/HostInfoPosix.h =================================================================== --- lldb/include/lldb/Host/posix/HostInfoPosix.h +++ lldb/include/lldb/Host/posix/HostInfoPosix.h @@ -22,6 +22,7 @@ public: static size_t GetPageSize(); static bool GetHostname(std::string &s); + static llvm::Optional<std::string> GetOSKernelDescription(); static uint32_t GetUserID(); static uint32_t GetGroupID(); Index: lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h =================================================================== --- lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h +++ lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h @@ -19,7 +19,6 @@ public: static llvm::VersionTuple GetOSVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); static FileSpec GetProgramFileSpec(); }; } Index: lldb/include/lldb/Host/netbsd/HostInfoNetBSD.h =================================================================== --- lldb/include/lldb/Host/netbsd/HostInfoNetBSD.h +++ lldb/include/lldb/Host/netbsd/HostInfoNetBSD.h @@ -19,7 +19,6 @@ public: static llvm::VersionTuple GetOSVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); static FileSpec GetProgramFileSpec(); }; } Index: lldb/include/lldb/Host/macosx/HostInfoMacOSX.h =================================================================== --- lldb/include/lldb/Host/macosx/HostInfoMacOSX.h +++ lldb/include/lldb/Host/macosx/HostInfoMacOSX.h @@ -25,7 +25,6 @@ static llvm::VersionTuple GetOSVersion(); static llvm::VersionTuple GetMacCatalystVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); static FileSpec GetProgramFileSpec(); static FileSpec GetXcodeContentsDirectory(); static FileSpec GetXcodeDeveloperDirectory(); Index: lldb/include/lldb/Host/linux/HostInfoLinux.h =================================================================== --- lldb/include/lldb/Host/linux/HostInfoLinux.h +++ lldb/include/lldb/Host/linux/HostInfoLinux.h @@ -27,7 +27,6 @@ static llvm::VersionTuple GetOSVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); static llvm::StringRef GetDistributionId(); static FileSpec GetProgramFileSpec(); Index: lldb/include/lldb/Host/freebsd/HostInfoFreeBSD.h =================================================================== --- lldb/include/lldb/Host/freebsd/HostInfoFreeBSD.h +++ lldb/include/lldb/Host/freebsd/HostInfoFreeBSD.h @@ -19,7 +19,6 @@ public: static llvm::VersionTuple GetOSVersion(); static llvm::Optional<std::string> GetOSBuildString(); - static bool GetOSKernelDescription(std::string &s); static FileSpec GetProgramFileSpec(); }; }
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits