[Lldb-commits] [lldb] r127009 - in /lldb/trunk/test/objc-optimized: TestObjcOptimized.py main.m

Johnny Chen johnny.chen at apple.com
Fri Mar 4 10:17:50 PST 2011


Author: johnny
Date: Fri Mar  4 12:17:49 2011
New Revision: 127009

URL: http://llvm.org/viewvc/llvm-project?rev=127009&view=rev
Log:
Add TestObjcOptimized.py under the objc-optimized directory to
test that objective-c expression parser continues to work for optimized build.

Radar filed:
# rdar://problem/9087739
# test failure: objc_optimized does not work for "-C clang -A i386"

Added:
    lldb/trunk/test/objc-optimized/TestObjcOptimized.py
Modified:
    lldb/trunk/test/objc-optimized/main.m

Added: lldb/trunk/test/objc-optimized/TestObjcOptimized.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/objc-optimized/TestObjcOptimized.py?rev=127009&view=auto
==============================================================================
--- lldb/trunk/test/objc-optimized/TestObjcOptimized.py (added)
+++ lldb/trunk/test/objc-optimized/TestObjcOptimized.py Fri Mar  4 12:17:49 2011
@@ -0,0 +1,63 @@
+"""
+Test that objective-c expression parser continues to work for optimized build.
+
+http://llvm.org/viewvc/llvm-project?rev=126973&view=rev
+Fixed a bug in the expression parser where the 'this'
+or 'self' variable was not properly read if the compiler
+optimized it into a register.
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+
+# rdar://problem/9087739
+# test failure: objc_optimized does not work for "-C clang -A i386"
+ at unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+class ObjcOptimizedTestCase(TestBase):
+
+    mydir = "objc-optimized"
+    myclass = "MyClass"
+    mymethod = "description"
+    method_spec = "-[%s %s]" % (myclass, mymethod)
+
+    def test_break_with_dsym(self):
+        """Test 'expr member' continues to work for optimized build."""
+        self.buildDsym()
+        self.objc_optimized()
+
+    def test_break_with_dwarf(self):
+        """Test 'expr member' continues to work for optimized build."""
+        self.buildDwarf()
+        self.objc_optimized()
+
+    def objc_optimized(self):
+        """Test 'expr member' continues to work for optimized build."""
+        exe = os.path.join(os.getcwd(), "a.out")
+        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+        self.expect("breakpoint set -n '%s'" % self.method_spec,
+                    BREAKPOINT_CREATED,
+            startstr = "Breakpoint created: 1: name = '%s', locations = 1" % self.method_spec)
+
+        self.runCmd("run", RUN_SUCCEEDED)
+        self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT,
+            substrs = ["stop reason = breakpoint"],
+            patterns = ["frame.*0:.*%s %s" % (self.myclass, self.mymethod)])
+
+        self.expect('expression member',
+            startstr = "(int) $0 = 5")
+
+        self.expect('expression self',
+            startstr = "(%s *) $1 = " % self.myclass)
+
+        self.expect('expression self->non_member', error=True,
+            substrs = ["does not have a member named 'non_member'"])
+
+        
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()

Modified: lldb/trunk/test/objc-optimized/main.m
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/objc-optimized/main.m?rev=127009&r1=127008&r2=127009&view=diff
==============================================================================
--- lldb/trunk/test/objc-optimized/main.m (original)
+++ lldb/trunk/test/objc-optimized/main.m Fri Mar  4 12:17:49 2011
@@ -24,10 +24,9 @@
     [super dealloc];
 }
 
+// Set a breakpoint on '-[MyClass description]' and test expressions: expr member
 - (NSString *)description
 {
-    // Set a breakpoint on '-[MyClass description]' and test expressions: expr member
-
     return [NSString stringWithFormat:@"%d", member];
 }
 @end





More information about the lldb-commits mailing list