diff options
author | Marcin Kościelnicki <koriakin@0x04.net> | 2015-11-10 12:12:00 +0100 |
---|---|---|
committer | Marcin Kościelnicki <koriakin@0x04.net> | 2015-11-10 20:06:38 +0100 |
commit | 53cc68ee4292b0833129d6fa6630d19fec333034 (patch) | |
tree | 396354cecaee3c30b7b27579defbddb723dc710c | |
parent | 6e7675a70f5a375159f94354fb6f38519303a73d (diff) | |
download | binutils-gdb-users/mwk/trace-test-cleanup.tar.gz |
gdb/testsuite/gdb.trace: Deduplicate set_point assembly.users/mwk/trace-test-cleanup
The assembly code for emitting the proper tracepointable instruction
was duplicated in many places. Keep it in one place, to reduce work
needed for new targets.
gdb/testsuite/ChangeLog:
* gdb.trace/change-loc.h: include "trace-common.h", remove SYMBOL
macro.
(func5): Removed.
(func4): Use TRACEPOINT_ASM.
* gdb.trace/ftrace-lock.c: include "trace-common.h", remove SYMBOL
macro.
(func): Removed.
(thread_function): Use TRACEPOINT_ASM.
* gdb.trace/ftrace.c: include "trace-common.h", remove SYMBOL macro.
(func): Remove.
(marker): Use TRACEPOINT_ASM.
* gdb.trace/pendshr1.c: include "trace-common.h", remove SYMBOL macro.
(pendfunc1): Remove.
(pendfunc): Use TRACEPOINT_ASM.
* gdb.trace/pendshr2.c: include "trace-common.h", remove SYMBOL macro.
(foo): Remove.
(pendfunc2): Use TRACEPOINT_ASM.
* gdb.trace/trace-break.c: include "trace-common.h", remove SYMBOL
macro.
(func): Remove.
(marker): Use TRACEPOINT_ASM.
* gdb.trace/trace-common.h: New header.
* gdb.trace/trace-condition.c: include "trace-common.h", remove SYMBOL
macro.
(func): Remove.
(marker): Use TRACEPOINT_ASM.
* gdb.trace/trace-mt.c: include "trace-common.h", remove SYMBOL macro.
(func): Remove.
(thread_function): Use TRACEPOINT_ASM.
-rw-r--r-- | gdb/testsuite/ChangeLog | 32 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/change-loc.h | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/ftrace-lock.c | 25 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/ftrace.c | 23 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/pendshr1.c | 25 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/pendshr2.c | 22 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/trace-break.c | 32 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/trace-common.h | 55 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/trace-condition.c | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/trace-mt.c | 23 |
10 files changed, 104 insertions, 181 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 0f041094576..8538434a769 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,37 @@ 2015-11-10 Marcin Kościelnicki <koriakin@0x04.net> + * gdb.trace/change-loc.h: include "trace-common.h", remove SYMBOL + macro. + (func5): Removed. + (func4): Use TRACEPOINT_ASM. + * gdb.trace/ftrace-lock.c: include "trace-common.h", remove SYMBOL + macro. + (func): Removed. + (thread_function): Use TRACEPOINT_ASM. + * gdb.trace/ftrace.c: include "trace-common.h", remove SYMBOL macro. + (func): Remove. + (marker): Use TRACEPOINT_ASM. + * gdb.trace/pendshr1.c: include "trace-common.h", remove SYMBOL macro. + (pendfunc1): Remove. + (pendfunc): Use TRACEPOINT_ASM. + * gdb.trace/pendshr2.c: include "trace-common.h", remove SYMBOL macro. + (foo): Remove. + (pendfunc2): Use TRACEPOINT_ASM. + * gdb.trace/trace-break.c: include "trace-common.h", remove SYMBOL + macro. + (func): Remove. + (marker): Use TRACEPOINT_ASM. + * gdb.trace/trace-common.h: New header. + * gdb.trace/trace-condition.c: include "trace-common.h", remove SYMBOL + macro. + (func): Remove. + (marker): Use TRACEPOINT_ASM. + * gdb.trace/trace-mt.c: include "trace-common.h", remove SYMBOL macro. + (func): Remove. + (thread_function): Use TRACEPOINT_ASM. + +2015-11-10 Marcin Kościelnicki <koriakin@0x04.net> + * gdb.trace/backtrace.exp: Use global fpreg/spreg definition, add $ in front. * gdb.trace/change-loc.exp: Use global pcreg definition. diff --git a/gdb/testsuite/gdb.trace/change-loc.h b/gdb/testsuite/gdb.trace/change-loc.h index 8201455d1fb..aaf823aa2d0 100644 --- a/gdb/testsuite/gdb.trace/change-loc.h +++ b/gdb/testsuite/gdb.trace/change-loc.h @@ -15,30 +15,10 @@ 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 - -/* Called from asm. */ -static void __attribute__((used)) -func5 (void) -{} +#include "trace-common.h" static void func4 (void) { - /* `set_tracepoint' is the label where we'll set multiple tracepoints and - breakpoints at. The insn at the label must the large enough to - fit a fast tracepoint jump. */ - asm (" .global " SYMBOL(set_tracepoint) "\n" - SYMBOL(set_tracepoint) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(func5) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); - + TRACEPOINT_ASM(set_tracepoint); } diff --git a/gdb/testsuite/gdb.trace/ftrace-lock.c b/gdb/testsuite/gdb.trace/ftrace-lock.c index 8ed45f41684..e5e1a167479 100644 --- a/gdb/testsuite/gdb.trace/ftrace-lock.c +++ b/gdb/testsuite/gdb.trace/ftrace-lock.c @@ -16,12 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <pthread.h> - -#ifdef SYMBOL_PREFIX -#define SYMBOL(str) SYMBOL_PREFIX #str -#else -#define SYMBOL(str) #str -#endif +#include "trace-common.h" /* Called if the testcase failed. */ static void @@ -61,26 +56,10 @@ gdb_agent_gdb_collect (void *tpoint, unsigned char *regs) } } -/* Called from asm. */ -static void __attribute__((used)) -func (void) -{ -} - static void * thread_function (void *arg) { - /* `set_point' is the label at which to set a fast tracepoint. The - insn at the label must be large enough to fit a fast tracepoint - jump. */ - asm (" .global " SYMBOL (set_point) "\n" - SYMBOL (set_point) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL (func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point); } static void diff --git a/gdb/testsuite/gdb.trace/ftrace.c b/gdb/testsuite/gdb.trace/ftrace.c index 7373d66a402..5869af095d8 100644 --- a/gdb/testsuite/gdb.trace/ftrace.c +++ b/gdb/testsuite/gdb.trace/ftrace.c @@ -15,11 +15,7 @@ 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 +#include "trace-common.h" int globvar; @@ -27,25 +23,10 @@ static void begin (void) {} -/* Called from asm. */ -static void __attribute__((used)) -func (void) -{} - static void marker (int anarg) { - /* `set_point' is the label at which to set a fast tracepoint. The - insn at the label must be large enough to fit a fast tracepoint - jump. */ - asm (" .global " SYMBOL(set_point) "\n" - SYMBOL(set_point) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point); ++anarg; diff --git a/gdb/testsuite/gdb.trace/pendshr1.c b/gdb/testsuite/gdb.trace/pendshr1.c index f08fb912571..065227f2ad8 100644 --- a/gdb/testsuite/gdb.trace/pendshr1.c +++ b/gdb/testsuite/gdb.trace/pendshr1.c @@ -15,31 +15,10 @@ 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 - -static void -pendfunc1 (void) -{ - int x = 0; - int y = x + 4; -} +#include "trace-common.h" void pendfunc (int x) { - /* `set_point1' is the label where we'll set multiple tracepoints and - breakpoints at. The insn at the label must the large enough to - fit a fast tracepoint jump. */ - asm (" .global " SYMBOL(set_point1) "\n" - SYMBOL(set_point1) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(pendfunc1) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point1); } diff --git a/gdb/testsuite/gdb.trace/pendshr2.c b/gdb/testsuite/gdb.trace/pendshr2.c index f7ec7334671..71d5220eae3 100644 --- a/gdb/testsuite/gdb.trace/pendshr2.c +++ b/gdb/testsuite/gdb.trace/pendshr2.c @@ -15,28 +15,10 @@ 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 - -static void -foo () -{} +#include "trace-common.h" void pendfunc2 (int x) { - /* `set_point2' is the label where we'll set multiple tracepoints and - breakpoints at. The insn at the label must the large enough to - fit a fast tracepoint jump. */ - asm (" .global " SYMBOL(set_point2) "\n" - SYMBOL(set_point2) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(foo) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point2); } diff --git a/gdb/testsuite/gdb.trace/trace-break.c b/gdb/testsuite/gdb.trace/trace-break.c index 66bbe53c685..a1e80cfe1d4 100644 --- a/gdb/testsuite/gdb.trace/trace-break.c +++ b/gdb/testsuite/gdb.trace/trace-break.c @@ -15,16 +15,7 @@ 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 - -/* Called from asm. */ -static void __attribute__((used)) -func (void) -{} +#include "trace-common.h" static void marker (void) @@ -34,26 +25,9 @@ marker (void) int a = 0; int b = a; - /* `set_point' is the label where we'll set multiple tracepoints and - breakpoints at. The insn at the label must the large enough to - fit a fast tracepoint jump. */ - asm (" .global " SYMBOL(set_point) "\n" - SYMBOL(set_point) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point); - asm (" .global " SYMBOL(after_set_point) "\n" - SYMBOL(after_set_point) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(after_set_point); } static void diff --git a/gdb/testsuite/gdb.trace/trace-common.h b/gdb/testsuite/gdb.trace/trace-common.h new file mode 100644 index 00000000000..5f5bd6f7006 --- /dev/null +++ b/gdb/testsuite/gdb.trace/trace-common.h @@ -0,0 +1,55 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011-2015 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 + +/* TRACEPOINT_ASM expands to an assembly instruction large enough to fit + a fast tracepoint jump. The parameter is the label where we'll set + tracepoints and breakpoints. */ + +#if (defined __x86_64__ || defined __i386__) + +static void +x86_trace_dummy () +{ + int x = 0; + int y = x + 4; +} + +#define TRACEPOINT_ASM(name) \ + asm (" .global " SYMBOL(name) "\n" \ + SYMBOL(name) ":\n" \ + " call " SYMBOL(x86_trace_dummy) "\n" \ + ) + +#elif (defined __aarch64__) + +#define TRACEPOINT_ASM(name) \ + asm (" .global " SYMBOL(name) "\n" \ + SYMBOL(name) ":\n" \ + " nop\n" \ + ) + +#else + +#error "unsupported architecture for trace tests" + +#endif diff --git a/gdb/testsuite/gdb.trace/trace-condition.c b/gdb/testsuite/gdb.trace/trace-condition.c index d988d76256c..6cca8bec027 100644 --- a/gdb/testsuite/gdb.trace/trace-condition.c +++ b/gdb/testsuite/gdb.trace/trace-condition.c @@ -15,11 +15,7 @@ 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 +#include "trace-common.h" int globvar; @@ -28,26 +24,10 @@ begin (void) { } -/* Called from asm. */ -static void __attribute__((used)) -func (void) -{ -} - static void marker (int anarg) { - /* `set_point' is the label at which to set a fast tracepoint. The - insn at the label must be large enough to fit a fast tracepoint - jump. */ - asm (" .global " SYMBOL (set_point) "\n" - SYMBOL (set_point) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL (func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point); } static void diff --git a/gdb/testsuite/gdb.trace/trace-mt.c b/gdb/testsuite/gdb.trace/trace-mt.c index 7ae0305a3fe..a8adb0ddf42 100644 --- a/gdb/testsuite/gdb.trace/trace-mt.c +++ b/gdb/testsuite/gdb.trace/trace-mt.c @@ -16,31 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <pthread.h> - -#ifdef SYMBOL_PREFIX -#define SYMBOL(str) SYMBOL_PREFIX #str -#else -#define SYMBOL(str) #str -#endif -/* Called from asm. */ -static void __attribute__((used)) -func (void) -{} +#include "trace-common.h" static void * thread_function(void *arg) { - /* `set_point1' is the label at which to set a fast tracepoint. The - insn at the label must be large enough to fit a fast tracepoint - jump. */ - asm (" .global " SYMBOL(set_point1) "\n" - SYMBOL(set_point1) ":\n" -#if (defined __x86_64__ || defined __i386__) - " call " SYMBOL(func) "\n" -#elif (defined __aarch64__) - " nop\n" -#endif - ); + TRACEPOINT_ASM(set_point1); } static void |