]> git.saurik.com Git - apple/xnu.git/blobdiff - tools/lldbmacros/ipc.py
xnu-6153.101.6.tar.gz
[apple/xnu.git] / tools / lldbmacros / ipc.py
index 88ea13b5bbb2fa9050477de7d637602226c130bf..a1b02fcedb7dc5a13f4a4e7315c25ac002971901 100755 (executable)
@@ -500,13 +500,17 @@ def GetKObjectFromPort(portval):
         params: portval - core.value representation of 'ipc_port *' object
         returns: str - string of kobject information
     """
-    kobject_str = "{0: <#020x}".format(portval.kdata.kobject)
     io_bits = unsigned(portval.ip_object.io_bits)
-    objtype_index = io_bits & 0x7ff
+    if io_bits & 0x400 :
+        kobject_val = portval.kdata.kolabel.ikol_kobject
+    else:
+        kobject_val = portval.kdata.kobject
+    kobject_str = "{0: <#020x}".format(kobject_val)
+    objtype_index = io_bits & 0x3ff
     if objtype_index < len(xnudefines.kobject_types) :
         objtype_str = xnudefines.kobject_types[objtype_index]
         if objtype_str == 'IOKIT_OBJ':
-            iokit_classnm = GetObjectTypeStr(portval.kdata.kobject)
+            iokit_classnm = GetObjectTypeStr(kobject_val)
             if not iokit_classnm:
                 iokit_classnm = "<unknown class>"
             else:
@@ -515,7 +519,7 @@ def GetKObjectFromPort(portval):
         else:
             desc_str = "kobject({0:s})".format(objtype_str)
             if xnudefines.kobject_types[objtype_index] in ('TASK_RESUME', 'TASK'):
-                desc_str += " " + GetProcNameForTask(Cast(portval.kdata.kobject, 'task *'))
+                desc_str += " " + GetProcNameForTask(Cast(kobject_val, 'task *'))
     else:
         desc_str = "kobject(UNKNOWN) {:d}".format(objtype_index)
     return kobject_str + " " + desc_str