diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2019-10-30 21:35:22 +0100 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2019-12-16 21:03:13 -0500 |
commit | 45d735237b7edf282131d570a7a9f6aa9ee1bd9c (patch) | |
tree | 5d74f3378ae94048b0d099de0ad97d41a2fad4ce /gdb/testsuite/gdb.base/skip-inline.c | |
parent | 4a4c04f1f4a926f986a77e72277c16e1b90c2b73 (diff) | |
download | gdb-45d735237b7edf282131d570a7a9f6aa9ee1bd9c.zip gdb-45d735237b7edf282131d570a7a9f6aa9ee1bd9c.tar.gz gdb-45d735237b7edf282131d570a7a9f6aa9ee1bd9c.tar.bz2 |
Add a test case for skip with inlined functions
Diffstat (limited to 'gdb/testsuite/gdb.base/skip-inline.c')
-rw-r--r-- | gdb/testsuite/gdb.base/skip-inline.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/skip-inline.c b/gdb/testsuite/gdb.base/skip-inline.c new file mode 100644 index 0000000..e562149 --- /dev/null +++ b/gdb/testsuite/gdb.base/skip-inline.c @@ -0,0 +1,64 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2019 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <stdlib.h> + +int bar (void); +int baz (int); +void skip1_test_skip_file_and_function (void); +void test_skip_file_and_function (void); + +__attribute__((__always_inline__)) static inline int +foo (void) +{ + return bar (); +} + +int +main () +{ + volatile int x; + + /* step immediately into the inlined code */ + baz (foo ()); + + /* step first over non-inline code, this involves a different code path */ + x = 0; x = baz (foo ()); + + test_skip_file_and_function (); + + return 0; +} + +static void +test_skip (void) +{ +} + +static void +end_test_skip_file_and_function (void) +{ + abort (); +} + +void +test_skip_file_and_function (void) +{ + test_skip (); + skip1_test_skip_file_and_function (); + end_test_skip_file_and_function (); +} |