diff options
| author | Enrico Granata <egranata@apple.com> | 2012-08-09 19:33:34 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2012-08-09 19:33:34 +0000 |
| commit | 7ec18e3d10aeded985ab2fcb0781d17a80ad0df5 (patch) | |
| tree | 1b99f1d79c3231115af2a1928c51e94267a9b966 /lldb/test | |
| parent | 10c6072d615a45617cf3e26c9b5b8f7f4d0046ef (diff) | |
| download | bcm5719-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')
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; +} + |

