summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2018-02-22 23:48:21 +0000
committerVedant Kumar <vsk@apple.com>2018-02-22 23:48:21 +0000
commit6d2b435d80dd8e0fb26208a4f6d042a06e5eb87e (patch)
treed28122849f348726db88cbfde0197ba1701e38c4 /lldb/packages/Python/lldbsuite/test
parentd2fab30827dd195c50bd1a92be6bf530280bbcde (diff)
downloadbcm5719-llvm-6d2b435d80dd8e0fb26208a4f6d042a06e5eb87e.tar.gz
bcm5719-llvm-6d2b435d80dd8e0fb26208a4f6d042a06e5eb87e.zip
[ObjC] Fix the NSConcreteData formatter and test it
The length field of an NSConcreteData lives one word past the start of the object, not two. llvm-svn: 325841
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py9
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m7
2 files changed, 14 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
index 17d3c1d0abf..80a4aa8482a 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
@@ -243,7 +243,7 @@ class ObjCDataFormatterTestCase(TestBase):
def nsdata_data_formatter_commands(self):
self.expect(
- 'frame variable immutableData mutableData data_ref mutable_data_ref mutable_string_ref',
+ 'frame variable immutableData mutableData data_ref mutable_data_ref mutable_string_ref concreteData concreteMutableData',
substrs=[
'(NSData *) immutableData = ',
' 4 bytes',
@@ -254,7 +254,12 @@ class ObjCDataFormatterTestCase(TestBase):
'(CFMutableDataRef) mutable_data_ref = ',
'@"5 bytes"',
'(CFMutableStringRef) mutable_string_ref = ',
- ' @"Wish ya knew"'])
+ ' @"Wish ya knew"',
+ '(NSData *) concreteData = ',
+ ' 100000 bytes',
+ '(NSMutableData *) concreteMutableData = ',
+ ' 100000 bytes'])
+
def nsurl_data_formatter_commands(self):
self.expect(
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m
index 1543ce6edb9..e0642f3cb39 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m
@@ -396,6 +396,12 @@ int main (int argc, const char * argv[])
NSData *immutableData = [[NSData alloc] initWithBytes:"HELLO" length:4];
NSData *mutableData = [[NSMutableData alloc] initWithBytes:"NODATA" length:6];
+ // No-copy versions of NSData initializers use NSConcreteData if over 2^16 elements are specified.
+ unsigned concreteLength = 100000;
+ void *zeroes = calloc(1, concreteLength);
+ NSData *concreteData = [[NSData alloc] initWithBytesNoCopy:zeroes length:concreteLength];
+ NSMutableData *concreteMutableData = [[NSMutableData alloc] initWithBytesNoCopy:zeroes length:concreteLength];
+
[mutableData appendBytes:"MOREDATA" length:8];
[immutableData length];
@@ -610,6 +616,7 @@ int main (int argc, const char * argv[])
[molecule setAtoms:nil];
[molecule setAtoms:[NSMutableArray new]];
+ free(zeroes);
[pool drain];
return 0;
}
OpenPOWER on IntegriCloud