aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Kościelnicki <koriakin@0x04.net>2015-11-10 12:12:00 +0100
committerMarcin Kościelnicki <koriakin@0x04.net>2015-11-11 21:44:04 +0100
commit430e004ef7ecb3f75fc3c6642c9fdfb1d85a3694 (patch)
treeb2e394177479e5ed63088ef277a011122d9e89a3
parent4397c913d5640ba61316d3e631d544cf768b5a36 (diff)
downloadfsf-binutils-gdb-430e004ef7ecb3f75fc3c6642c9fdfb1d85a3694.zip
fsf-binutils-gdb-430e004ef7ecb3f75fc3c6642c9fdfb1d85a3694.tar.gz
fsf-binutils-gdb-430e004ef7ecb3f75fc3c6642c9fdfb1d85a3694.tar.bz2
gdb/testsuite/gdb.trace: Deduplicate set_point assembly.
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 FAST_TRACEPOINT_LABEL. * gdb.trace/ftrace-lock.c: include "trace-common.h", remove SYMBOL macro. (func): Removed. (thread_function): Use FAST_TRACEPOINT_LABEL. * gdb.trace/ftrace.c: include "trace-common.h", remove SYMBOL macro. (func): Remove. (marker): Use FAST_TRACEPOINT_LABEL. * gdb.trace/pendshr1.c: include "trace-common.h", remove SYMBOL macro. (pendfunc1): Remove. (pendfunc): Use FAST_TRACEPOINT_LABEL. * gdb.trace/pendshr2.c: include "trace-common.h", remove SYMBOL macro. (foo): Remove. (pendfunc2): Use FAST_TRACEPOINT_LABEL. * gdb.trace/trace-break.c: include "trace-common.h", remove SYMBOL macro. (func): Remove. (marker): Use FAST_TRACEPOINT_LABEL. * gdb.trace/trace-common.h: New header. * gdb.trace/trace-condition.c: include "trace-common.h", remove SYMBOL macro. (func): Remove. (marker): Use FAST_TRACEPOINT_LABEL. * gdb.trace/trace-mt.c: include "trace-common.h", remove SYMBOL macro. (func): Remove. (thread_function): Use FAST_TRACEPOINT_LABEL.
-rw-r--r--gdb/testsuite/ChangeLog32
-rw-r--r--gdb/testsuite/gdb.trace/change-loc.h24
-rw-r--r--gdb/testsuite/gdb.trace/ftrace-lock.c25
-rw-r--r--gdb/testsuite/gdb.trace/ftrace.c23
-rw-r--r--gdb/testsuite/gdb.trace/pendshr1.c25
-rw-r--r--gdb/testsuite/gdb.trace/pendshr2.c22
-rw-r--r--gdb/testsuite/gdb.trace/trace-break.c32
-rw-r--r--gdb/testsuite/gdb.trace/trace-common.h55
-rw-r--r--gdb/testsuite/gdb.trace/trace-condition.c24
-rw-r--r--gdb/testsuite/gdb.trace/trace-mt.c23
10 files changed, 104 insertions, 181 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0f04109..85dcbe9 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,35 @@
+2015-11-11 Marcin Kościelnicki <koriakin@0x04.net>
+
+ * gdb.trace/change-loc.h: include "trace-common.h", remove SYMBOL
+ macro.
+ (func5): Removed.
+ (func4): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/ftrace-lock.c: include "trace-common.h", remove SYMBOL
+ macro.
+ (func): Removed.
+ (thread_function): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/ftrace.c: include "trace-common.h", remove SYMBOL macro.
+ (func): Remove.
+ (marker): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/pendshr1.c: include "trace-common.h", remove SYMBOL macro.
+ (pendfunc1): Remove.
+ (pendfunc): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/pendshr2.c: include "trace-common.h", remove SYMBOL macro.
+ (foo): Remove.
+ (pendfunc2): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/trace-break.c: include "trace-common.h", remove SYMBOL
+ macro.
+ (func): Remove.
+ (marker): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/trace-common.h: New header.
+ * gdb.trace/trace-condition.c: include "trace-common.h", remove SYMBOL
+ macro.
+ (func): Remove.
+ (marker): Use FAST_TRACEPOINT_LABEL.
+ * gdb.trace/trace-mt.c: include "trace-common.h", remove SYMBOL macro.
+ (func): Remove.
+ (thread_function): Use FAST_TRACEPOINT_LABEL.
+
2015-11-10 Marcin Kościelnicki <koriakin@0x04.net>
* gdb.trace/backtrace.exp: Use global fpreg/spreg definition, add $
diff --git a/gdb/testsuite/gdb.trace/change-loc.h b/gdb/testsuite/gdb.trace/change-loc.h
index 8201455..00037e2 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
- );
-
+ FAST_TRACEPOINT_LABEL(set_tracepoint);
}
diff --git a/gdb/testsuite/gdb.trace/ftrace-lock.c b/gdb/testsuite/gdb.trace/ftrace-lock.c
index 8ed45f4..a89af51 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
- );
+ FAST_TRACEPOINT_LABEL(set_point);
}
static void
diff --git a/gdb/testsuite/gdb.trace/ftrace.c b/gdb/testsuite/gdb.trace/ftrace.c
index 7373d66..4e80bf1 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
- );
+ FAST_TRACEPOINT_LABEL(set_point);
++anarg;
diff --git a/gdb/testsuite/gdb.trace/pendshr1.c b/gdb/testsuite/gdb.trace/pendshr1.c
index f08fb91..85fb743 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
- );
+ FAST_TRACEPOINT_LABEL(set_point1);
}
diff --git a/gdb/testsuite/gdb.trace/pendshr2.c b/gdb/testsuite/gdb.trace/pendshr2.c
index f7ec733..23fda6f 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
- );
+ FAST_TRACEPOINT_LABEL(set_point2);
}
diff --git a/gdb/testsuite/gdb.trace/trace-break.c b/gdb/testsuite/gdb.trace/trace-break.c
index 66bbe53..cb6d14b 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
- );
+ FAST_TRACEPOINT_LABEL(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
- );
+ FAST_TRACEPOINT_LABEL(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 0000000..f1d7339
--- /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
+
+/* FAST_TRACEPOINT_LABEL 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 FAST_TRACEPOINT_LABEL(name) \
+ asm (" .global " SYMBOL(name) "\n" \
+ SYMBOL(name) ":\n" \
+ " call " SYMBOL(x86_trace_dummy) "\n" \
+ )
+
+#elif (defined __aarch64__)
+
+#define FAST_TRACEPOINT_LABEL(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 d988d76..8eda10c 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
- );
+ FAST_TRACEPOINT_LABEL(set_point);
}
static void
diff --git a/gdb/testsuite/gdb.trace/trace-mt.c b/gdb/testsuite/gdb.trace/trace-mt.c
index 7ae0305..af6d2c1 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
- );
+ FAST_TRACEPOINT_LABEL(set_point1);
}
static void