shafik updated this revision to Diff 312636.
shafik added a comment.

Updating diff to reflect comments.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93421/new/

https://reviews.llvm.org/D93421

Files:
  lldb/source/Plugins/Language/ObjC/Cocoa.cpp
  
lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
  lldb/test/API/functionalities/data-formatter/boolreference/main.mm
  lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
  lldb/test/API/lang/objc/bitfield_ivars/main.m

Index: lldb/test/API/lang/objc/bitfield_ivars/main.m
===================================================================
--- lldb/test/API/lang/objc/bitfield_ivars/main.m
+++ lldb/test/API/lang/objc/bitfield_ivars/main.m
@@ -1,5 +1,13 @@
 #import <Foundation/Foundation.h>
 
+typedef struct {
+    unsigned char fieldOne : 1;
+    unsigned char fieldTwo : 1;
+    unsigned char fieldThree : 1;
+    unsigned char fieldFour : 1;
+    unsigned char fieldfive : 1;
+} UCBitFields;
+
 @interface HasBitfield : NSObject {
 @public
     unsigned field1 : 1;
@@ -59,6 +67,10 @@
     hb2->field2 = 3;
     hb2->field3 = 4;
 
+    UCBitFields myField = {0};
+    myField.fieldTwo = 1;
+    myField.fieldfive = 1;
+
     return 0; // break here
 }
 
Index: lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
===================================================================
--- lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
+++ lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
@@ -24,6 +24,8 @@
                                              'field1 =', '10',
                                              'field2 =', '3',
                                              'field3 =', '4'])
+        self.expect('p myField',
+                   substrs=['(UCBitFields)', 'fieldOne = \'\\0\'', 'fieldTwo = \'\\x01\'', 'fieldThree = \'\\0\'', 'fieldFour = \'\\0\'', 'fieldfive = \'\\x01\''])
 
     # This test is meant to be xfailed, but running the test triggers an ASan
     # issue, so it must be skipped for now.
Index: lldb/test/API/functionalities/data-formatter/boolreference/main.mm
===================================================================
--- lldb/test/API/functionalities/data-formatter/boolreference/main.mm
+++ lldb/test/API/functionalities/data-formatter/boolreference/main.mm
@@ -1,12 +1,20 @@
 #import <Foundation/Foundation.h>
 
+typedef struct {
+    BOOL fieldOne : 1;
+    BOOL fieldTwo : 1;
+    BOOL fieldThree : 1;
+    BOOL fieldFour : 1;
+    BOOL fieldfive : 1;
+} BoolBitFields;
+
 int main (int argc, const char * argv[])
 {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 
 	BOOL yes  = YES;
 	BOOL no = NO;
-    BOOL unset = 12;
+  BOOL unset = 12;
 	
 	BOOL &yes_ref = yes;
 	BOOL &no_ref = no;
@@ -16,6 +24,10 @@
 	BOOL* no_ptr = &no;
 	BOOL* unset_ptr = &unset;
 
+  BoolBitFields myField = {0};
+  myField.fieldTwo = YES;
+  myField.fieldfive = YES;
+
     [pool drain];// Set break point at this line.
     return 0;
 }
Index: lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
===================================================================
--- lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
+++ lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
@@ -75,3 +75,6 @@
                     substrs=['NO'])
         if not(isArm):
             self.expect('frame variable unset', substrs=['12'])
+
+        self.expect('p myField',
+                   substrs=['(BoolBitFields)', 'fieldOne = NO', 'fieldTwo = 255', 'fieldThree = NO', 'fieldFour = NO', 'fieldfive = 255'])
Index: lldb/source/Plugins/Language/ObjC/Cocoa.cpp
===================================================================
--- lldb/source/Plugins/Language/ObjC/Cocoa.cpp
+++ lldb/source/Plugins/Language/ObjC/Cocoa.cpp
@@ -1035,7 +1035,7 @@
     if (!real_guy_sp)
       return false;
   }
-  uint8_t value = (real_guy_sp->GetValueAsUnsigned(0) & 0xFF);
+  uint8_t value = (real_guy_sp->GetValueAsSigned(0) & 0xFF);
   switch (value) {
   case 0:
     stream.Printf("NO");
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to