forked from Imagelibrary/rtems
libdebugger: Use an offset table to format GDB g packets.
Adding support for a register offset table lets FPU registers be supported if added to the backend. Closes #3733.
This commit is contained in:
@@ -85,11 +85,15 @@ typedef struct rtems_debugger_target_swbreak {
|
||||
|
||||
/**
|
||||
* The target data.
|
||||
*
|
||||
* reg_offset: Table of size_t offset of a register in the register
|
||||
* table. The table has one more entry than reg_num where
|
||||
* the last entry is the size of the register table.
|
||||
*/
|
||||
typedef struct rtems_debugger_target {
|
||||
int capabilities; /*<< The capabilities to report. */
|
||||
size_t reg_num; /*<< The number of registers. */
|
||||
size_t reg_size; /*<< The size of a register. */
|
||||
const size_t* reg_offset; /*<< The reg offsettable, len = reg_num + 1. */
|
||||
const uint8_t* breakpoint; /*<< The breakpoint instruction(s). */
|
||||
size_t breakpoint_size; /*<< The breakpoint size. */
|
||||
rtems_debugger_block swbreaks; /*<< The software breakpoint block. */
|
||||
@@ -133,9 +137,19 @@ extern uint32_t rtems_debugger_target_capabilities(void);
|
||||
extern size_t rtems_debugger_target_reg_num(void);
|
||||
|
||||
/**
|
||||
* Return the size of the regisers in bytes.
|
||||
* Return the offset of a register in the register table.
|
||||
*/
|
||||
extern size_t rtems_debugger_target_reg_size(void);
|
||||
extern size_t rtems_debugger_target_reg_size(size_t reg);
|
||||
|
||||
/**
|
||||
* Return the offset of a register in the register table.
|
||||
*/
|
||||
extern size_t rtems_debugger_target_reg_offset(size_t reg);
|
||||
|
||||
/**
|
||||
* Return the size of register table.
|
||||
*/
|
||||
extern size_t rtems_debugger_target_reg_table_size(void);
|
||||
|
||||
/**
|
||||
* Read the regosters.
|
||||
@@ -177,6 +191,11 @@ extern int rtems_debugger_target_thread_stepping(rtems_debugger_thread* thread);
|
||||
*/
|
||||
extern int rtems_debugger_target_exception_to_signal(CPU_Exception_frame* frame);
|
||||
|
||||
/**
|
||||
* Print the target exception registers.
|
||||
*/
|
||||
extern void rtems_debugger_target_exception_print(CPU_Exception_frame* frame);
|
||||
|
||||
/**
|
||||
* Software breakpoints. These are also referred to as memory breakpoints.
|
||||
*/
|
||||
@@ -245,6 +264,11 @@ extern int rtems_debugger_target_start_memory_access(void);
|
||||
*/
|
||||
extern void rtems_debugger_target_end_memory_access(void);
|
||||
|
||||
/**
|
||||
* Is this a target memory access?
|
||||
*/
|
||||
extern bool rtems_debugger_target_is_memory_access(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
Reference in New Issue
Block a user