summaryrefslogtreecommitdiff
path: root/gdb/aarch64-tdep.h
diff options
context:
space:
mode:
authorOmair Javaid <omair.javaid@linaro.org>2015-05-11 12:10:46 +0100
committerYao Qi <yao.qi@linaro.org>2015-05-26 12:42:07 +0100
commit99afc88b396045cfe3755bede41a45ad3bed021d (patch)
treef663dbf78829f4cf535697af77ddb7fff19d5e1d /gdb/aarch64-tdep.h
parentc16a3f522a71a20ff6e26599d684a61ac6acecca (diff)
downloadbinutils-gdb-99afc88b396045cfe3755bede41a45ad3bed021d.tar.gz
Implements aarch64 process record and reverse debugging support
This patch adds the support of aarch64-linux process record and reverse debugging. The implementation is similar to ARM's counterpart. 2015-05-26 Omair Javaid <omair.javaid@linaro.org> Yao Qi <yao.qi@linaro.org> * aarch64-linux-tdep.c: Include linux-record.h and record-full.h. (struct linux_record_tdep aarch64_linux_record_tdep): Declare. (aarch64_syscall): New enum. (aarch64_canonicalize_syscall): New function. (aarch64_all_but_pc_registers_record): New function. (aarch64_linux_syscall_record): New function. (aarch64_linux_init_abi): Install AArch64 process record handler. Update to handle syscall recording. * aarch64-tdep.c: Include record.h and record-full.h. (submask, bit, bits, REG_ALLOC, MEM_ALLOC): New macros. (struct aarch64_mem_r): Define. (aarch64_record_result): New enum. (struct insn_decode_record): Define. (insn_decode_record): New typedef. (aarch64_record_data_proc_reg): New function. (aarch64_record_data_proc_imm): New function. (aarch64_record_branch_except_sys): New function. (aarch64_record_load_store): New function. (aarch64_record_data_proc_simd_fp): New function. (aarch64_record_asimd_load_store): New function. (aarch64_record_decode_insn_handler): New function. (deallocate_reg_mem): New function. (aarch64_process_record): New function. * aarch64-tdep.h (struct gdbarch_tdep) <aarch64_syscall_record>: New field. (aarch64_process_record): New extern declaration. * configure.tgt: Add linux-record.o to gdb_target_obs. * linux-record.h (struct linux_record_tdep) <arg7>: New field.
Diffstat (limited to 'gdb/aarch64-tdep.h')
-rw-r--r--gdb/aarch64-tdep.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h
index 976ad32ddbc..af209a95acc 100644
--- a/gdb/aarch64-tdep.h
+++ b/gdb/aarch64-tdep.h
@@ -88,8 +88,14 @@ struct gdbarch_tdep
struct type *vns_type;
struct type *vnh_type;
struct type *vnb_type;
+
+ /* syscall record. */
+ int (*aarch64_syscall_record) (struct regcache *regcache, unsigned long svc_number);
};
extern struct target_desc *tdesc_aarch64;
+extern int aarch64_process_record (struct gdbarch *gdbarch,
+ struct regcache *regcache, CORE_ADDR addr);
+
#endif /* aarch64-tdep.h */