summaryrefslogtreecommitdiffstats
path: root/lldb/test
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2012-08-09 19:33:34 +0000
committerEnrico Granata <egranata@apple.com>2012-08-09 19:33:34 +0000
commit7ec18e3d10aeded985ab2fcb0781d17a80ad0df5 (patch)
tree1b99f1d79c3231115af2a1928c51e94267a9b966 /lldb/test
parent10c6072d615a45617cf3e26c9b5b8f7f4d0046ef (diff)
downloadbcm5719-llvm-7ec18e3d10aeded985ab2fcb0781d17a80ad0df5.tar.gz
bcm5719-llvm-7ec18e3d10aeded985ab2fcb0781d17a80ad0df5.zip
<rdar://problem/10449092> Adding a new uppercase hex format specifier. This commit also changes the short names for formats so that uppercase hex can be 'X', which was previously assigned to hex float. hex float now has no short name.
llvm-svn: 161606
Diffstat (limited to 'lldb/test')
-rw-r--r--lldb/test/functionalities/data-formatter/rdar-10449092/Makefile5
-rw-r--r--lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py99
-rw-r--r--lldb/test/functionalities/data-formatter/rdar-10449092/main.cpp25
3 files changed, 129 insertions, 0 deletions
diff --git a/lldb/test/functionalities/data-formatter/rdar-10449092/Makefile b/lldb/test/functionalities/data-formatter/rdar-10449092/Makefile
new file mode 100644
index 00000000000..314f1cb2f07
--- /dev/null
+++ b/lldb/test/functionalities/data-formatter/rdar-10449092/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py b/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py
new file mode 100644
index 00000000000..63c0796e512
--- /dev/null
+++ b/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py
@@ -0,0 +1,99 @@
+"""
+Test lldb data formatter subsystem.
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+
+class Radar10449092DataFormatterTestCase(TestBase):
+
+ # test for rdar://problem/10449092 ()
+ mydir = os.path.join("functionalities", "data-formatter", "rdar-10449092")
+
+ @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+ @dsym_test
+ def test_with_dsym_and_run_command(self):
+ """Test data formatter commands."""
+ self.buildDsym()
+ self.data_formatter_commands()
+
+ @dwarf_test
+ def test_with_dwarf_and_run_command(self):
+ """Test data formatter commands."""
+ self.buildDwarf()
+ self.data_formatter_commands()
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # Find the line number to break at.
+ self.line = line_number('main.cpp', '// Set break point at this line.')
+
+ def data_formatter_commands(self):
+ """Test that that file and class static variables display correctly."""
+ self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
+
+ self.expect("breakpoint set -f main.cpp -l %d" % self.line,
+ BREAKPOINT_CREATED,
+ startstr = "Breakpoint created: 1: file ='main.cpp', line = %d, locations = 1" %
+ self.line)
+
+ self.runCmd("run", RUN_SUCCEEDED)
+
+ # The stop reason of the thread should be breakpoint.
+ self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+ substrs = ['stopped',
+ 'stop reason = breakpoint'])
+
+ # This is the function to remove the custom formats in order to have a
+ # clean slate for the next test case.
+ def cleanup():
+ self.runCmd('type format delete hex', check=False)
+ self.runCmd('type summary clear', check=False)
+
+ # Execute the cleanup function during test case tear down.
+ self.addTearDownHook(cleanup)
+
+ self.runCmd("type format add -f uppercase int")
+
+ self.expect('frame variable mine',
+ substrs = ['mine = ',
+ 'first = 0x001122AA', 'second = 0x1122BB44'])
+
+ self.runCmd("type format add -f hex int")
+
+ self.expect('frame variable mine',
+ substrs = ['mine = ',
+ 'first = 0x001122aa', 'second = 0x1122bb44'])
+
+ self.runCmd("type format delete int")
+
+ self.runCmd("type summary add -s \"${var.first%X} and ${var.second%x}\" foo")
+
+ self.expect('frame variable mine',
+ substrs = ['(foo) mine = 0x001122AA and 0x1122bb44'])
+
+ self.runCmd("type summary add -s \"${var.first%X} and ${var.second%X}\" foo")
+ self.runCmd("next")
+ self.expect('frame variable mine',
+ substrs = ['(foo) mine = 0xAABBCCDD and 0x1122BB44'])
+
+ self.runCmd("type summary add -s \"${var.first%x} and ${var.second%X}\" foo")
+ self.expect('frame variable mine',
+ substrs = ['(foo) mine = 0xaabbccdd and 0x1122BB44'])
+ self.runCmd("next")
+ self.runCmd("type summary add -s \"${var.first%x} and ${var.second%x}\" foo")
+ self.expect('frame variable mine',
+ substrs = ['(foo) mine = 0xaabbccdd and 0xff00ff00'])
+ self.runCmd("type summary add -s \"${var.first%X} and ${var.second%X}\" foo")
+ self.expect('frame variable mine',
+ substrs = ['(foo) mine = 0xAABBCCDD and 0xFF00FF00'])
+
+
+if __name__ == '__main__':
+ import atexit
+ lldb.SBDebugger.Initialize()
+ atexit.register(lambda: lldb.SBDebugger.Terminate())
+ unittest2.main()
diff --git a/lldb/test/functionalities/data-formatter/rdar-10449092/main.cpp b/lldb/test/functionalities/data-formatter/rdar-10449092/main.cpp
new file mode 100644
index 00000000000..97804202639
--- /dev/null
+++ b/lldb/test/functionalities/data-formatter/rdar-10449092/main.cpp
@@ -0,0 +1,25 @@
+//===-- main.cpp ------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+
+struct foo
+{
+ int first;
+ int second;
+};
+
+int main ()
+{
+ struct foo mine = {0x001122AA, 0x1122BB44};
+ mine.first = 0xAABBCCDD; // Set break point at this line.
+ mine.second = 0xFF00FF00;
+ return 0;
+}
+
OpenPOWER on IntegriCloud