gdb: Add tracepoint support for powerpc.
authorMarcin Kościelnicki <koriakin@0x04.net>
Thu, 7 Jan 2016 15:48:02 +0000 (16:48 +0100)
committerMarcin Kościelnicki <koriakin@0x04.net>
Wed, 9 Mar 2016 17:47:46 +0000 (18:47 +0100)
gdb/gdbserver/ChangeLog:

* linux-ppc-low.c (ppc_supports_tracepoints): New function.
(struct linux_target_ops): Wire in the above.

gdb/testsuite/ChangeLog:

* gdb.trace/ftrace.exp: Set arg0exp for ppc.
* gdb.trace/mi-trace-unavailable.exp: Set pcnum for ppc.
* gdb.trace/pending.exp: Accept leading dot before function name.
* gdb.trace/trace-common.h: Add fast tracepoint dummy insn for ppc.
* lib/trace-support.exp: Set registers for ppc.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-ppc-low.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/ftrace.exp
gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
gdb/testsuite/gdb.trace/pending.exp
gdb/testsuite/gdb.trace/trace-common.h
gdb/testsuite/lib/trace-support.exp

index 11e1c4fca5a6be492825fa36b37eb9ecb0e86d7d..dda87b0eea713791ba98cb62acb60f028c73cbe1 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-09  Marcin Kościelnicki  <koriakin@0x04.net>
+
+       * linux-ppc-low.c (ppc_supports_tracepoints): New function.
+       (struct linux_target_ops): Wire in the above.
+
 2016-03-03  Yao Qi  <yao.qi@linaro.org>
 
        * linux-low.c: Update comments to start_step_over.
index 61a1693c4c77a6b9611ebae29dfac57b0ae965bd..49d27ee70bb2801185e7f7047c1b36e64fc9a748 100644 (file)
@@ -756,6 +756,12 @@ ppc_arch_setup (void)
   current_process ()->tdesc = tdesc;
 }
 
+static int
+ppc_supports_tracepoints (void)
+{
+  return 1;
+}
+
 struct linux_target_ops the_low_target = {
   ppc_arch_setup,
   ppc_regs_info,
@@ -782,7 +788,7 @@ struct linux_target_ops the_low_target = {
   NULL, /* new_fork */
   NULL, /* prepare_to_resume */
   NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
+  ppc_supports_tracepoints,
   NULL, /* get_thread_area */
   NULL, /* install_fast_tracepoint_jump_pad */
   NULL, /* emit_ops */
index 67042537867f5bed1acb857e2f8e5150bbc4638f..644a6f1bff433055dddb7a6f17d4283aca786e9f 100644 (file)
@@ -1,3 +1,11 @@
+2016-03-09  Marcin Kościelnicki  <koriakin@0x04.net>
+
+       * gdb.trace/ftrace.exp: Set arg0exp for ppc.
+       * gdb.trace/mi-trace-unavailable.exp: Set pcnum for ppc.
+       * gdb.trace/pending.exp: Accept leading dot before function name.
+       * gdb.trace/trace-common.h: Add fast tracepoint dummy insn for ppc.
+       * lib/trace-support.exp: Set registers for ppc.
+
 2016-03-09  Marcin Kościelnicki  <koriakin@0x04.net>
 
        * gdb.trace/entry-values.exp: Link ${binfile}1.o to ${binfile}1 and
index a1d47718e466af93f9c836b310791661057758b1..349f4e2d6662c5da56f095e365883b919df244be 100644 (file)
@@ -242,6 +242,8 @@ if [is_amd64_regs_target] {
     set arg0exp "*(int *) (\$ebp + 8)"
 } elseif { [istarget "aarch64*-*-*"] } {
     set arg0exp "\$x0"
+} elseif [istarget "powerpc*-*-*"] {
+    set arg0exp "\$r3"
 } else {
     set arg0exp ""
 }
index 82c610134ed1491335d2469276af841b2a8333f0..4228c9720882e0d5065393d86f3f5a35af2210f3 100644 (file)
@@ -137,6 +137,8 @@ proc test_trace_unavailable { data_source } {
            set pcnum 8
        } elseif [is_aarch64_target] {
            set pcnum 32
+       } elseif [istarget "powerpc*-*-*"] {
+           set pcnum 64
        } else {
            # Other ports support tracepoint should define the number
            # of its own pc register.
index 3ef752f58e5744c69a2b519860d35a8e169d045e..43f4c60c3b9351b49bf615164abdd96fee554a2e 100644 (file)
@@ -307,7 +307,8 @@ proc pending_tracepoint_installed_during_trace { trace_type } \
 \[0-9\]+\[\t \]+\(fast |\)tracepoint\[ \]+keep y.*pendfunc2.*" \
        "tracepoint is resolved"
 
-    gdb_test "tfind start" "#0  $hex in pendfunc2 .*" "tfind test frame 0"
+    # powerpc64 shows "in .pendfunc2" here.
+    gdb_test "tfind start" "#0  $hex in .?pendfunc2 .*" "tfind test frame 0"
     gdb_test "tfind" "Target failed to find requested trace frame..*" "tfind test frame"
 }}
 
index eceb1822d61722fa556a73745d3b00798ed1c6b7..fa99fd90fbffa54a482b14f1bdb667b77d31de33 100644 (file)
@@ -40,7 +40,7 @@ x86_trace_dummy ()
        "    call " SYMBOL(x86_trace_dummy) "\n" \
        )
 
-#elif (defined __aarch64__)
+#elif (defined __aarch64__) || (defined __powerpc__)
 
 #define FAST_TRACEPOINT_LABEL(name) \
   asm ("    .global " SYMBOL(name) "\n" \
index f593c4347aced62a7b9d80fdd09a014aff1674d8..372a595f27bbf7fc2345337b551ccb75818eef8d 100644 (file)
@@ -36,6 +36,10 @@ if [is_amd64_regs_target] {
     set fpreg "x29"
     set spreg "sp"
     set pcreg "pc"
+} elseif [istarget "powerpc*-*-*"] {
+    set fpreg "r31"
+    set spreg "r1"
+    set pcreg "pc"
 } else {
     set fpreg "fp"
     set spreg "sp"