Author: enrico
Date: Mon Sep 12 19:22:49 2016
New Revision: 281282

URL: http://llvm.org/viewvc/llvm-project?rev=281282&view=rev
Log:
Fix an issue where LLDB was not masking enough bits off of objc classes data() 
pointers, effectively rendering us unable to generate descriptors for some 
classes

Fixes rdar://27758358


Modified:
    
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp

Modified: 
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp?rev=281282&r1=281281&r2=281282&view=diff
==============================================================================
--- 
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp
 (original)
+++ 
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp
 Mon Sep 12 19:22:49 2016
@@ -28,6 +28,19 @@ bool ClassDescriptorV2::Read_objc_class(
   return ret;
 }
 
+static lldb::addr_t GetClassDataMask(Process *process) {
+  switch (process->GetAddressByteSize()) {
+  case 4:
+    return 0xfffffffcUL;
+  case 8:
+    return 0x00007ffffffffff8UL;
+  default:
+    break;
+  }
+
+  return LLDB_INVALID_ADDRESS;
+}
+
 bool ClassDescriptorV2::objc_class_t::Read(Process *process,
                                            lldb::addr_t addr) {
   size_t ptr_size = process->GetAddressByteSize();
@@ -60,7 +73,7 @@ bool ClassDescriptorV2::objc_class_t::Re
       extractor.GetAddress_unchecked(&cursor); // uintptr_t data_NEVER_USE;
 
   m_flags = (uint8_t)(data_NEVER_USE & (lldb::addr_t)3);
-  m_data_ptr = data_NEVER_USE & ~(lldb::addr_t)3;
+  m_data_ptr = data_NEVER_USE & GetClassDataMask(process);
 
   return true;
 }


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to