Index: gdb/gdbserver/linux-low.h |
diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h |
index 2befc48ada632245915c5a4859e950314c3fad53..99d882aa5e0141e85c2ef75a7afd715e063802de 100644 |
--- a/gdb/gdbserver/linux-low.h |
+++ b/gdb/gdbserver/linux-low.h |
@@ -20,9 +20,15 @@ |
#ifdef HAVE_THREAD_DB_H |
#include <thread_db.h> |
#endif |
+#include <signal.h> |
+#include "gdbthread.h" |
#include "gdb_proc_service.h" |
+#define PTRACE_ARG3_TYPE void * |
+#define PTRACE_ARG4_TYPE void * |
+#define PTRACE_XFER_TYPE long |
+ |
#ifdef HAVE_LINUX_REGSETS |
typedef void (*regset_fill_func) (struct regcache *, void *); |
typedef void (*regset_store_func) (struct regcache *, const void *); |
@@ -46,8 +52,6 @@ struct regset_info |
extern struct regset_info target_regsets[]; |
#endif |
-struct siginfo; |
- |
struct process_info_private |
{ |
/* Arch-specific additions. */ |
@@ -70,12 +74,26 @@ struct linux_target_ops |
int num_regs; |
int *regmap; |
+ |
+ /* Regset support bitmap: 1 for registers that are transferred as a part |
+ of a regset, 0 for ones that need to be handled individually. This |
+ can be NULL if all registers are transferred with regsets or regsets |
+ are not supported. */ |
+ unsigned char *regset_bitmap; |
int (*cannot_fetch_register) (int); |
/* Returns 0 if we can store the register, 1 if we can not |
store the register, and 2 if failure to store the register |
is acceptable. */ |
int (*cannot_store_register) (int); |
+ |
+ /* Hook to fetch a register in some non-standard way. Used for |
+ example by backends that have read-only registers with hardcoded |
+ values (e.g., IA64's gr0/fr0/fr1). Returns true if register |
+ REGNO was supplied, false if not, and we should fallback to the |
+ standard ptrace methods. */ |
+ int (*fetch_register) (struct regcache *regcache, int regno); |
+ |
CORE_ADDR (*get_pc) (struct regcache *regcache); |
void (*set_pc) (struct regcache *regcache, CORE_ADDR newpc); |
const unsigned char *breakpoint; |
@@ -103,7 +121,7 @@ struct linux_target_ops |
Returns true if any conversion was done; false otherwise. |
If DIRECTION is 1, then copy from INF to NATIVE. |
If DIRECTION is 0, copy from NATIVE to INF. */ |
- int (*siginfo_fixup) (struct siginfo *native, void *inf, int direction); |
+ int (*siginfo_fixup) (siginfo_t *native, void *inf, int direction); |
/* Hook to call when a new process is created or attached to. |
If extra per-process architecture-specific data is needed, |
@@ -265,8 +283,7 @@ struct lwp_info |
extern struct inferior_list all_lwps; |
-char *linux_child_pid_to_exec_file (int pid); |
-int elf_64_file_p (const char *file); |
+int linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine); |
void linux_attach_lwp (unsigned long pid); |
struct lwp_info *find_lwp_pid (ptid_t ptid); |