diff options
author | Pedro Alves <palves@redhat.com> | 2013-05-23 17:19:05 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2013-05-23 17:19:05 +0000 |
commit | bc5065a70f840e8f0b0aaddfb0d99464e2c8771d (patch) | |
tree | f5b53511d51ee8da7c8e7975bc33de308a497760 /gdb/testsuite/gdb.trace/range-stepping.c | |
parent | c2d6af84da44465f30e3bb487721128dfe03d0e4 (diff) | |
download | gdb-bc5065a70f840e8f0b0aaddfb0d99464e2c8771d.zip gdb-bc5065a70f840e8f0b0aaddfb0d99464e2c8771d.tar.gz gdb-bc5065a70f840e8f0b0aaddfb0d99464e2c8771d.tar.bz2 |
range stepping: tests
This adds tests to verify range stepping is used as expected, by
inspecting the RSP traffic, looking for vCont;s and vCont;r packets.
gdb/testsuite/
2013-05-23 Yao Qi <yao@codesourcery.com>
Pedro Alves <palves@redhat.com>
* gdb.base/range-stepping.c: New file.
* gdb.base/range-stepping.exp: New file.
* gdb.trace/range-stepping.c: New file.
* gdb.trace/range-stepping.exp: New file.
* lib/range-stepping-support.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.trace/range-stepping.c')
-rw-r--r-- | gdb/testsuite/gdb.trace/range-stepping.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.trace/range-stepping.c b/gdb/testsuite/gdb.trace/range-stepping.c new file mode 100644 index 0000000..b0e93f9 --- /dev/null +++ b/gdb/testsuite/gdb.trace/range-stepping.c @@ -0,0 +1,56 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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/>. */ + +#ifdef SYMBOL_PREFIX +#define SYMBOL(str) SYMBOL_PREFIX #str +#else +#define SYMBOL(str) #str +#endif + +/* `set_point' further below is the label where we'll set tracepoints + at. The insn at the label must the large enough to fit a fast + tracepoint jump. */ +#if (defined __x86_64__ || defined __i386__) +# define NOP " .byte 0xe9,0x00,0x00,0x00,0x00\n" /* jmp $+5 (5-byte nop) */ +#else +# define NOP "" /* port me */ +#endif + +int +main(void) +{ + /* Note: 'volatile' is used to make sure the compiler doesn't + optimize out these variables. We want to be sure instructions + are generated for accesses. */ + volatile int i = 0; + + /* Generate a single line with a label in the middle where we can + place either a trap tracepoint or a fast tracepoint. */ +#define LINE_WITH_FAST_TRACEPOINT \ + do { \ + i = 1; \ + asm (" .global " SYMBOL (set_point) "\n" \ + SYMBOL (set_point) ":\n" \ + NOP \ + ); \ + i = 2; \ + } while (0) + + LINE_WITH_FAST_TRACEPOINT; /* location 1 */ + + return 0; +} |