summaryrefslogtreecommitdiffstats
path: root/lldb/test/functionalities
diff options
context:
space:
mode:
authorDawn Perchik <dawn@burble.org>2015-07-21 22:05:07 +0000
committerDawn Perchik <dawn@burble.org>2015-07-21 22:05:07 +0000
commit23b1decbe763783c630763c0ae9b7b20773131c8 (patch)
treefdd11d22d8a0ab885562f2a07d7aa9720293bc19 /lldb/test/functionalities
parentf836c89c4953d9ca5e390b41e0ebc84c903a46c0 (diff)
downloadbcm5719-llvm-23b1decbe763783c630763c0ae9b7b20773131c8.tar.gz
bcm5719-llvm-23b1decbe763783c630763c0ae9b7b20773131c8.zip
Add support for specifying a language to use when parsing breakpoints.
Target and breakpoints options were added: breakpoint set --language lang --name func settings set target.language pascal These specify the Language to use when interpreting the breakpoint's expression (note: currently only implemented for breakpoints on identifiers). If the breakpoint language is not set, the target.language setting is used. This support is required by Pascal, for example, to set breakpoint at 'ns.foo' for function 'foo' in namespace 'ns'. Tests on the language were also added to Module::PrepareForFunctionNameLookup for efficiency. Reviewed by: clayborg Subscribers: jingham, lldb-commits Differential Revision: http://reviews.llvm.org/D11119 llvm-svn: 242844
Diffstat (limited to 'lldb/test/functionalities')
-rw-r--r--lldb/test/functionalities/breakpoint/breakpoint_options/Makefile2
-rw-r--r--lldb/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py41
-rw-r--r--lldb/test/functionalities/breakpoint/breakpoint_options/foo.cpp12
-rw-r--r--lldb/test/functionalities/breakpoint/breakpoint_options/main.cpp (renamed from lldb/test/functionalities/breakpoint/breakpoint_options/main.c)3
4 files changed, 49 insertions, 9 deletions
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_options/Makefile b/lldb/test/functionalities/breakpoint/breakpoint_options/Makefile
index b09a579159d..457c4972f2d 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_options/Makefile
+++ b/lldb/test/functionalities/breakpoint/breakpoint_options/Makefile
@@ -1,5 +1,5 @@
LEVEL = ../../../make
-C_SOURCES := main.c
+CXX_SOURCES := main.cpp foo.cpp
include $(LEVEL)/Makefile.rules
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py b/lldb/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
index b8704bda7d8..e86cdec7786 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
@@ -29,7 +29,7 @@ class BreakpointOptionsTestCase(TestBase):
# Call super's setUp().
TestBase.setUp(self)
# Find the line number to break inside main().
- self.line = line_number('main.c', '// Set break point at this line.')
+ self.line = line_number('main.cpp', '// Set break point at this line.')
def breakpoint_options_test(self):
"""Test breakpoint command for different options."""
@@ -37,11 +37,11 @@ class BreakpointOptionsTestCase(TestBase):
self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
# This should create a breakpoint with 1 locations.
- lldbutil.run_break_set_by_file_and_line (self, "main.c", self.line, extra_options = "-K 1", num_expected_locations = 1)
- lldbutil.run_break_set_by_file_and_line (self, "main.c", self.line, extra_options = "-K 0", num_expected_locations = 1)
+ lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line, extra_options = "-K 1", num_expected_locations = 1)
+ lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line, extra_options = "-K 0", num_expected_locations = 1)
# This should create a breakpoint 0 locations.
- lldbutil.run_break_set_by_file_and_line (self, "main.c", self.line, extra_options = "-m 0", num_expected_locations = 0)
+ lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line, extra_options = "-m 0", num_expected_locations = 0)
# Run the program.
self.runCmd("run", RUN_SUCCEEDED)
@@ -52,9 +52,9 @@ class BreakpointOptionsTestCase(TestBase):
# Check the list of breakpoint.
self.expect("breakpoint list -f", "Breakpoint locations shown correctly",
- substrs = ["1: file = 'main.c', line = %d, exact_match = 0, locations = 1" % self.line,
- "2: file = 'main.c', line = %d, exact_match = 0, locations = 1" % self.line,
- "3: file = 'main.c', line = %d, exact_match = 1, locations = 0" % self.line])
+ substrs = ["1: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.line,
+ "2: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.line,
+ "3: file = 'main.cpp', line = %d, exact_match = 1, locations = 0" % self.line])
# Continue the program, there should be another stop.
self.runCmd("process continue")
@@ -70,6 +70,33 @@ class BreakpointOptionsTestCase(TestBase):
self.expect("process status", "Process exited successfully",
patterns = ["^Process [0-9]+ exited with status = 0"])
+ def breakpoint_options_language_test(self):
+ """Test breakpoint command for language option."""
+ exe = os.path.join(os.getcwd(), "a.out")
+ self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+ # This should create a breakpoint with 1 locations.
+ lldbutil.run_break_set_by_symbol (self, 'ns::func', sym_exact=False, extra_options = "-L c++", num_expected_locations=1)
+
+ # This should create a breakpoint 0 locations.
+ lldbutil.run_break_set_by_symbol (self, 'ns::func', sym_exact=False, extra_options = "-L c", num_expected_locations=0)
+ self.runCmd("settings set target.language c")
+ lldbutil.run_break_set_by_symbol (self, 'ns::func', sym_exact=False, num_expected_locations=0)
+
+ # Run the program.
+ self.runCmd("run", RUN_SUCCEEDED)
+
+ # Stopped once.
+ self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT,
+ substrs = ["stop reason = breakpoint 1."])
+
+ # Continue the program, we should exit.
+ self.runCmd("process continue")
+
+ # We should exit.
+ self.expect("process status", "Process exited successfully",
+ patterns = ["^Process [0-9]+ exited with status = 0"])
+
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_options/foo.cpp b/lldb/test/functionalities/breakpoint/breakpoint_options/foo.cpp
new file mode 100644
index 00000000000..e5d0e09803e
--- /dev/null
+++ b/lldb/test/functionalities/breakpoint/breakpoint_options/foo.cpp
@@ -0,0 +1,12 @@
+
+namespace ns {
+ int func(void)
+ {
+ return 0;
+ }
+}
+
+extern "C" int foo(void)
+{
+ return ns::func();
+}
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_options/main.c b/lldb/test/functionalities/breakpoint/breakpoint_options/main.cpp
index 359e977cd39..363b90003d7 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_options/main.c
+++ b/lldb/test/functionalities/breakpoint/breakpoint_options/main.cpp
@@ -1,7 +1,8 @@
// Set break point at this line.
+extern "C" int foo(void);
int
main (int argc, char **argv)
{
- return 0;
+ return foo();
}
OpenPOWER on IntegriCloud