[Lldb-commits] [lldb] r244716 - Have debugserver send the OS version string plus
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 11 20:27:33 PDT 2015
Author: jmolenda
Date: Tue Aug 11 22:27:33 2015
New Revision: 244716
URL: http://llvm.org/viewvc/llvm-project?rev=244716&view=rev
Log:
Have debugserver send the OS version string plus
major, minor, and patchlevel in the qHostInfo reply.
Document that qHostInfo may report major/minor/patch
separately / in addition to the version: combination.
<rdar://problem/22125465>
Modified:
lldb/trunk/docs/lldb-gdb-remote.txt
lldb/trunk/tools/debugserver/source/DNB.cpp
lldb/trunk/tools/debugserver/source/DNB.h
lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h
lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm
lldb/trunk/tools/debugserver/source/RNBRemote.cpp
Modified: lldb/trunk/docs/lldb-gdb-remote.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/docs/lldb-gdb-remote.txt?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/docs/lldb-gdb-remote.txt (original)
+++ lldb/trunk/docs/lldb-gdb-remote.txt Tue Aug 11 22:27:33 2015
@@ -569,7 +569,7 @@ cputype: is a number that is the mach-o
cpusubtype: is a number that is the mach-o CPU subtype type that is being debugged (base 10)
triple: a string for the target triple (x86_64-apple-macosx) that can be used to specify arch + vendor + os in one entry
vendor: a string for the vendor (apple), not needed if "triple" is specified
-ostype: a string for the OS being debugged (darwin, linux, freebsd), not needed if "triple" is specified
+ostype: a string for the OS being debugged (macosx, linux, freebsd, ios, watchos), not needed if "triple" is specified
endian: is one of "little", "big", or "pdp"
ptrsize: an unsigned number that represents how big pointers are in bytes on the debug target
hostname: the hostname of the host that is running the GDB server if available
@@ -579,6 +579,9 @@ os_version: a version string that repres
watchpoint_exceptions_received: one of "before" or "after" to specify if a watchpoint is triggered before or after the pc when it stops
default_packet_timeout: an unsigned number that specifies the default timeout in seconds
distribution_id: optional. For linux, specifies distribution id (e.g. ubuntu, fedora, etc.)
+osmajor: optional, specifies the major version number of the OS (e.g. for Mac OS X 10.11.2, it would be 10)
+osminor: optional, specifies the minor version number of the OS (e.g. for Mac OS X 10.11.2, it would be 11)
+ospatch: optional, specifies the patch level number of the OS (e.g. for Mac OS X 10.11.2, it would be 2)
//----------------------------------------------------------------------
// "qGDBServerVersion"
Modified: lldb/trunk/tools/debugserver/source/DNB.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNB.cpp?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/DNB.cpp (original)
+++ lldb/trunk/tools/debugserver/source/DNB.cpp Tue Aug 11 22:27:33 2015
@@ -1936,6 +1936,12 @@ DNBResolveExecutablePath (const char *pa
return false;
}
+bool
+DNBGetOSVersionNumbers (uint64_t *major, uint64_t *minor, uint64_t *patch)
+{
+ return MachProcess::GetOSVersionNumbers (major, minor, patch);
+}
+
void
DNBInitialize()
Modified: lldb/trunk/tools/debugserver/source/DNB.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNB.h?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/DNB.h (original)
+++ lldb/trunk/tools/debugserver/source/DNB.h Tue Aug 11 22:27:33 2015
@@ -168,5 +168,6 @@ nub_bool_t DNBGetRegisterInfoByName
//----------------------------------------------------------------------
const char * DNBStateAsString (nub_state_t state);
nub_bool_t DNBResolveExecutablePath (const char *path, char *resolved_path, size_t resolved_path_size);
+bool DNBGetOSVersionNumbers (uint64_t *major, uint64_t *minor, uint64_t *patch);
#endif
Modified: lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h (original)
+++ lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.h Tue Aug 11 22:27:33 2015
@@ -80,6 +80,7 @@ public:
static const void * PrepareForAttach (const char *path, nub_launch_flavor_t launch_flavor, bool waitfor, DNBError &err_str);
static void CleanupAfterAttach (const void *attach_token, bool success, DNBError &err_str);
static nub_process_t CheckForProcess (const void *attach_token);
+ static bool GetOSVersionNumbers (uint64_t *major, uint64_t *minor, uint64_t *patch);
#ifdef WITH_BKS
pid_t BKSLaunchForDebug (const char *app_bundle_path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
pid_t BKSForkChildForPTraceDebugging (const char *path, char const *argv[], char const *envp[], bool no_stdio, bool disable_aslr, const char *event_data, DNBError &launch_err);
Modified: lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm (original)
+++ lldb/trunk/tools/debugserver/source/MacOSX/MachProcess.mm Tue Aug 11 22:27:33 2015
@@ -31,6 +31,8 @@
#include <algorithm>
#include <map>
+#import <Foundation/Foundation.h>
+
#include "DNBDataRef.h"
#include "DNBLog.h"
#include "DNBThreadResumeActions.h"
@@ -2020,6 +2022,28 @@ MachProcess::GetGenealogyImageInfo (size
return m_activities.GetProcessExecutableInfosAtIndex (idx);
}
+bool
+MachProcess::GetOSVersionNumbers (uint64_t *major, uint64_t *minor, uint64_t *patch)
+{
+ bool success = false;
+
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ NSOperatingSystemVersion vers = [[NSProcessInfo processInfo] operatingSystemVersion];
+ if (major)
+ *major = vers.majorVersion;
+ if (minor)
+ *minor = vers.minorVersion;
+ if (patch)
+ *patch = vers.patchVersion;
+
+ success = true;
+
+ [pool drain];
+
+ return success;
+}
+
// Do the process specific setup for attach. If this returns NULL, then there's no
// platform specific stuff to be done to wait for the attach. If you get non-null,
// pass that token to the CheckForProcess method, and then to CleanupAfterAttach.
Modified: lldb/trunk/tools/debugserver/source/RNBRemote.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/RNBRemote.cpp?rev=244716&r1=244715&r2=244716&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/RNBRemote.cpp (original)
+++ lldb/trunk/tools/debugserver/source/RNBRemote.cpp Tue Aug 11 22:27:33 2015
@@ -4628,6 +4628,21 @@ RNBRemote::HandlePacket_qHostInfo (const
strm << "vendor:apple;";
+ uint64_t major, minor, patch;
+ if (DNBGetOSVersionNumbers (&major, &minor, &patch))
+ {
+ strm << "osmajor:" << major << ";";
+ strm << "osminor:" << minor << ";";
+ strm << "ospatch:" << patch << ";";
+
+ strm << "version:" << major << "." << minor;
+ if (patch != 0)
+ {
+ strm << "." << patch;
+ }
+ strm << ";";
+ }
+
#if defined (__LITTLE_ENDIAN__)
strm << "endian:little;";
#elif defined (__BIG_ENDIAN__)
More information about the lldb-commits
mailing list