This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/5 v4] powerpc: Support z-point type in gdbserver.


Another old approved patch that I'd like to push. Testing on ppc+ppc64+ppc64le:

gdb.base/dprintf.exp: agent: 1st dprintf UNSUPPORTED -> PASSÃ3
gdb.base/jit.exp: PIE: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" PASS -> FAIL, on ppc64 only (I don't consider that one a problem, since jit.exp already has lots of similiar FAILs for this arch, nothing really new is broken here)
gdb.mi/mi-dprintf.exp: mi expect stop FAILÃ5 -> PASSÃ4
gdb.threads/forking-threads-plus-breakpoint.exp: cond_bp_target=1: detach_on_fork=on: displaced=off FAIL -> PASSÃ3 gdb.threads/process-dies-while-handling-bp.exp: non_stop=on: cond_bp_target=1: KFAIL (memory error) -> KFAIL (prompt) gdb.threads/process-dies-while-handling-bp.exp: non_stop=off: cond_bp_target=[01]: inferior 1 exited PASSÃ2 -> KFAIL (PRMS: gdb/18749)

Fixes a lot of gdb.trace tests if I enable tracepoints.

On 27/06/15 18:21, Wei-cheng Wang wrote:
Support z-point, so tracepoints and breakpoints can be inserted at the same
location.

gdb/gdbserver/ChangeLog

2015-06-27  Wei-cheng Wang  <cole945@gmail.com>

	* linux-ppc-low.c (ppc_supports_z_point_type): New function:
	(ppc_insert_point, ppc_remove_point): Insert/remove z-packet breakpoints.
	(ppc64_emit_ops_vector): Add target ops - ppc_supports_z_point_type,
	ppc_insert_point, ppc_remove_point.
---
  gdb/gdbserver/linux-ppc-low.c | 69 +++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 66 insertions(+), 3 deletions(-)

diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
index 188fac0..41ec281 100644
--- a/gdb/gdbserver/linux-ppc-low.c
+++ b/gdb/gdbserver/linux-ppc-low.c
@@ -512,6 +512,69 @@ ppc_breakpoint_at (CORE_ADDR where)
    return 0;
  }

+/* Implement supports_z_point_type target-ops.
+   Returns true if type Z_TYPE breakpoint is supported.
+
+   Handling software breakpoint at server side, so tracepoints
+   and breakpoints can be inserted at the same location.  */
+
+static int
+ppc_supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+      return 1;
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_ACCESS_WP:
+    default:
+      return 0;
+    }
+}
+
+/* Implement insert_point target-ops.
+   Returns 0 on success, -1 on failure and 1 on unsupported.  */
+
+static int
+ppc_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		  int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return insert_memory_breakpoint (bp);
+
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+/* Implement remove_point target-ops.
+   Returns 0 on success, -1 on failure and 1 on unsupported.  */
+
+static int
+ppc_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		  int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return remove_memory_breakpoint (bp);
+
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
  /* Provide only a fill function for the general register set.  ps_lgetregs
     will use this for NPTL support.  */

@@ -690,9 +753,9 @@ struct linux_target_ops the_low_target = {
    NULL,
    0,
    ppc_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL,
-  NULL,
+  ppc_supports_z_point_type,
+  ppc_insert_point,
+  ppc_remove_point,
    NULL,
    NULL,
    ppc_collect_ptrace_register,



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]