Index: packages/Python/lldbsuite/test/lang/c/inlines/Makefile =================================================================== --- packages/Python/lldbsuite/test/lang/c/inlines/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := inlines.c - -include $(LEVEL)/Makefile.rules Index: packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py =================================================================== --- packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py +++ /dev/null @@ -1,52 +0,0 @@ -"""Test variable lookup when stopped in inline functions.""" - -from __future__ import print_function - -import os, time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -class InlinesTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number('inlines.c', '// Set break point at this line.') - - @expectedFailureAll("llvm.org/pr26710", oslist=["linux"], compiler="gcc") - @expectedFailureAll("llvm.org/pr26710", oslist=["windows"], compiler="clang") - def test(self): - """Test that local variables are visible in expressions.""" - self.build() - self.runToBreakpoint() - - # Check that 'frame variable' finds a variable - self.expect("frame variable inner_input", VARIABLES_DISPLAYED_CORRECTLY, - startstr = '(int) inner_input =') - - # Check that 'expr' finds a variable - self.expect("expr inner_input", VARIABLES_DISPLAYED_CORRECTLY, - startstr = '(int) $0 =') - - def runToBreakpoint(self): - exe = os.path.join(os.getcwd(), "a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Break inside the main. - lldbutil.run_break_set_by_file_and_line (self, "inlines.c", self.line, num_expected_locations=3, loc_exact=True) - - 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']) - - # The breakpoint should have a hit count of 1. - self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, - substrs = [' resolved, hit count = 1']) Index: packages/Python/lldbsuite/test/lang/c/inlines/inlines.h =================================================================== --- packages/Python/lldbsuite/test/lang/c/inlines/inlines.h +++ /dev/null @@ -1,4 +0,0 @@ -int inner_inline (int inner_input, int mod_value); -int outer_inline (int outer_input); -int not_inlined_2 (int input); -int not_inlined_1 (int input); Index: packages/Python/lldbsuite/test/lang/c/inlines/inlines.c =================================================================== --- packages/Python/lldbsuite/test/lang/c/inlines/inlines.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include "inlines.h" - -#define INLINE_ME __inline__ __attribute__((always_inline)) - -int -not_inlined_2 (int input) -{ - printf ("Called in not_inlined_2 with : %d.\n", input); - return input; -} - -int -not_inlined_1 (int input) -{ - printf ("Called in not_inlined_1 with %d.\n", input); - return not_inlined_2(input); -} - -INLINE_ME int -inner_inline (int inner_input, int mod_value) -{ - int inner_result; - inner_result = inner_input % mod_value; - printf ("Returning: %d.\n", inner_result); - return not_inlined_1 (inner_result); // Set break point at this line. -} - -INLINE_ME int -outer_inline (int outer_input) -{ - int outer_result; - - outer_result = inner_inline (outer_input, outer_input % 3); - return outer_result; -} - -int -main (int argc, char **argv) -{ - printf ("Starting...\n"); - - int (*func_ptr) (int); - func_ptr = outer_inline; - - outer_inline (argc); - - func_ptr (argc); - - return 0; -} - - Index: packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../../make + +CXX_SOURCES := inlines.cpp + +include $(LEVEL)/Makefile.rules Index: packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py @@ -0,0 +1,52 @@ +"""Test variable lookup when stopped in inline functions.""" + +from __future__ import print_function + +import os, time +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class InlinesTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number to break inside main(). + self.line = line_number('inlines.cpp', '// Set break point at this line.') + + @expectedFailureAll("llvm.org/pr26710", oslist=["linux"], compiler="gcc") + def test(self): + """Test that local variables are visible in expressions.""" + self.build() + self.runToBreakpoint() + + # Check that 'frame variable' finds a variable + self.expect("frame variable inner_input", VARIABLES_DISPLAYED_CORRECTLY, + startstr = '(int) inner_input =') + + # Check that 'expr' finds a variable + self.expect("expr inner_input", VARIABLES_DISPLAYED_CORRECTLY, + startstr = '(int) $0 =') + + def runToBreakpoint(self): + exe = os.path.join(os.getcwd(), "a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + # Break inside the main. + lldbutil.run_break_set_by_file_and_line(self, "inlines.cpp", self.line, num_expected_locations=2, + loc_exact=True) + + 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']) + + # The breakpoint should have a hit count of 1. + self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, + substrs = [' resolved, hit count = 1']) Index: packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h @@ -0,0 +1,4 @@ +int inner_inline (int inner_input, int mod_value); +int outer_inline (int outer_input); +int not_inlined_2 (int input); +int not_inlined_1 (int input); Index: packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp @@ -0,0 +1,53 @@ +#include +#include "inlines.h" + +#define INLINE_ME __inline__ __attribute__((always_inline)) + +int +not_inlined_2 (int input) +{ + printf ("Called in not_inlined_2 with : %d.\n", input); + return input; +} + +int +not_inlined_1 (int input) +{ + printf ("Called in not_inlined_1 with %d.\n", input); + return not_inlined_2(input); +} + +INLINE_ME int +inner_inline (int inner_input, int mod_value) +{ + int inner_result; + inner_result = inner_input % mod_value; + printf ("Returning: %d.\n", inner_result); + return not_inlined_1 (inner_result); // Set break point at this line. +} + +INLINE_ME int +outer_inline (int outer_input) +{ + int outer_result; + + outer_result = inner_inline (outer_input, outer_input % 3); + return outer_result; +} + +int +main (int argc, char **argv) +{ + printf ("Starting...\n"); + + int (*func_ptr) (int); + func_ptr = outer_inline; + + outer_inline (argc); + + func_ptr (argc); + + return 0; +} + +