aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog7
-rw-r--r--gdb/gdbserver/linux-aarch64-low.c63
2 files changed, 44 insertions, 26 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 87c6673..8ec0d8e 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,10 @@
+2015-07-10 Pierre Langlois <pierre.langlois@arm.com>
+
+ * linux-aarch64-low.c: Add comments for each linux_target_ops
+ method. Remove comments already covered in target_ops and
+ linux_target_ops definitions.
+ (the_low_target): Add comments for each unimplemented method.
+
2015-07-09 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (aarch64_regmap): Remove.
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index 91afd1b..b068e55 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -189,12 +189,16 @@ struct arch_lwp_info
static int aarch64_num_bp_regs;
static int aarch64_num_wp_regs;
+/* Implementation of linux_target_ops method "cannot_store_register". */
+
static int
aarch64_cannot_store_register (int regno)
{
return regno >= AARCH64_NUM_REGS;
}
+/* Implementation of linux_target_ops method "cannot_fetch_register". */
+
static int
aarch64_cannot_fetch_register (int regno)
{
@@ -255,6 +259,8 @@ aarch64_store_fpregset (struct regcache *regcache, const void *buf)
was originally used to debug LinuxThreads support. */
extern int debug_threads;
+/* Implementation of linux_target_ops method "get_pc". */
+
static CORE_ADDR
aarch64_get_pc (struct regcache *regcache)
{
@@ -266,6 +272,8 @@ aarch64_get_pc (struct regcache *regcache)
return pc;
}
+/* Implementation of linux_target_ops method "set_pc". */
+
static void
aarch64_set_pc (struct regcache *regcache, CORE_ADDR pc)
{
@@ -280,6 +288,8 @@ aarch64_set_pc (struct regcache *regcache, CORE_ADDR pc)
(aarch64_default_breakpoint). */
static const gdb_byte aarch64_breakpoint[] = {0x00, 0x00, 0x20, 0xd4};
+/* Implementation of linux_target_ops method "breakpoint_at". */
+
static int
aarch64_breakpoint_at (CORE_ADDR where)
{
@@ -925,6 +935,8 @@ aarch64_handle_watchpoint (enum target_hw_bp_type type, CORE_ADDR addr,
return aarch64_handle_unaligned_watchpoint (type, addr, len, is_insert);
}
+/* Implementation of linux_target_ops method "supports_z_point_type". */
+
static int
aarch64_supports_z_point_type (char z_type)
{
@@ -941,13 +953,10 @@ aarch64_supports_z_point_type (char z_type)
}
}
-/* Insert a hardware breakpoint/watchpoint.
- It actually only records the info of the to-be-inserted bp/wp;
- the actual insertion will happen when threads are resumed.
+/* Implementation of linux_target_ops method "insert_point".
- Return 0 if succeed;
- Return 1 if TYPE is unsupported type;
- Return -1 if an error occurs. */
+ It actually only records the info of the to-be-inserted bp/wp;
+ the actual insertion will happen when threads are resumed. */
static int
aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
@@ -977,13 +986,10 @@ aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
return ret;
}
-/* Remove a hardware breakpoint/watchpoint.
- It actually only records the info of the to-be-removed bp/wp,
- the actual removal will be done when threads are resumed.
+/* Implementation of linux_target_ops method "remove_point".
- Return 0 if succeed;
- Return 1 if TYPE is an unsupported type;
- Return -1 if an error occurs. */
+ It actually only records the info of the to-be-removed bp/wp,
+ the actual removal will be done when threads are resumed. */
static int
aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
@@ -1014,8 +1020,7 @@ aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
return ret;
}
-/* Returns the address associated with the watchpoint that hit, if
- any; returns 0 otherwise. */
+/* Implementation of linux_target_ops method "stopped_data_address". */
static CORE_ADDR
aarch64_stopped_data_address (void)
@@ -1052,8 +1057,7 @@ aarch64_stopped_data_address (void)
return (CORE_ADDR) 0;
}
-/* Returns 1 if target was stopped due to a watchpoint hit, 0
- otherwise. */
+/* Implementation of linux_target_ops method "stopped_by_watchpoint". */
static int
aarch64_stopped_by_watchpoint (void)
@@ -1087,7 +1091,7 @@ ps_get_thread_area (const struct ps_prochandle *ph,
return PS_OK;
}
-/* Called when a new process is created. */
+/* Implementation of linux_target_ops method "linux_new_process". */
static struct arch_process_info *
aarch64_linux_new_process (void)
@@ -1099,7 +1103,7 @@ aarch64_linux_new_process (void)
return info;
}
-/* Called when a new thread is detected. */
+/* Implementation of linux_target_ops method "linux_new_thread". */
static void
aarch64_linux_new_thread (struct lwp_info *lwp)
@@ -1115,6 +1119,8 @@ aarch64_linux_new_thread (struct lwp_info *lwp)
lwp->arch_private = info;
}
+/* Implementation of linux_target_ops method "linux_new_fork". */
+
static void
aarch64_linux_new_fork (struct process_info *parent,
struct process_info *child)
@@ -1142,7 +1148,8 @@ aarch64_linux_new_fork (struct process_info *parent,
*child->priv->arch_private = *parent->priv->arch_private;
}
-/* Called when resuming a thread.
+/* Implementation of linux_target_ops method "linux_prepare_to_resume".
+
If the debug regs have changed, update the thread's copies. */
static void
@@ -1190,6 +1197,8 @@ aarch64_linux_prepare_to_resume (struct lwp_info *lwp)
#define AARCH64_DEBUG_ARCH(x) (((x) >> 8) & 0xff)
#define AARCH64_DEBUG_ARCH_V8 0x6
+/* Implementation of linux_target_ops method "arch_setup". */
+
static void
aarch64_arch_setup (void)
{
@@ -1270,6 +1279,8 @@ static struct regs_info regs_info =
&aarch64_regsets_info,
};
+/* Implementation of linux_target_ops method "regs_info". */
+
static const struct regs_info *
aarch64_regs_info (void)
{
@@ -1290,27 +1301,27 @@ struct linux_target_ops the_low_target =
aarch64_regs_info,
aarch64_cannot_fetch_register,
aarch64_cannot_store_register,
- NULL,
+ NULL, /* fetch_register */
aarch64_get_pc,
aarch64_set_pc,
(const unsigned char *) &aarch64_breakpoint,
aarch64_breakpoint_len,
- NULL,
- 0,
+ NULL, /* breakpoint_reinsert_addr */
+ 0, /* decr_pc_after_break */
aarch64_breakpoint_at,
aarch64_supports_z_point_type,
aarch64_insert_point,
aarch64_remove_point,
aarch64_stopped_by_watchpoint,
aarch64_stopped_data_address,
- NULL,
- NULL,
- NULL,
+ NULL, /* collect_ptrace_register */
+ NULL, /* supply_ptrace_register */
+ NULL, /* siginfo_fixup */
aarch64_linux_new_process,
aarch64_linux_new_thread,
aarch64_linux_new_fork,
aarch64_linux_prepare_to_resume,
- NULL,
+ NULL, /* process_qsupported */
aarch64_supports_tracepoints,
};