mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 00:57:39 +01:00
(unw_tdep_word_t): New type.
(ia64_regnum_t): Define well-known frame registers here and add TDEP-aliases for use by libunwind.h. (unw_ia64_table_t): Use unw_tdep_word_t instead of unw_word_t so this file can be included by libunwind.h. Change type of "array" member to void *. On OSes that support ILP32, it may point to a 32-bit unwind table. (Logical change 1.5)
This commit is contained in:
parent
5cdb197f44
commit
cd66944a2c
1 changed files with 22 additions and 8 deletions
|
@ -28,6 +28,8 @@ License. */
|
||||||
|
|
||||||
#include <ucontext.h>
|
#include <ucontext.h>
|
||||||
|
|
||||||
|
typedef uint64_t unw_tdep_word_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
/* Note: general registers are excepted to start with index 0.
|
/* Note: general registers are excepted to start with index 0.
|
||||||
|
@ -36,7 +38,6 @@ typedef enum
|
||||||
_Unwind_SetGR() and _Unwind_GetGR() for details. */
|
_Unwind_SetGR() and _Unwind_GetGR() for details. */
|
||||||
UNW_IA64_GR = 0, /* general registers (r0..r127) */
|
UNW_IA64_GR = 0, /* general registers (r0..r127) */
|
||||||
UNW_IA64_GP = UNW_IA64_GR + 1,
|
UNW_IA64_GP = UNW_IA64_GR + 1,
|
||||||
UNW_IA64_SP = UNW_IA64_GR + 12,
|
|
||||||
UNW_IA64_TP = UNW_IA64_GR + 13,
|
UNW_IA64_TP = UNW_IA64_GR + 13,
|
||||||
|
|
||||||
UNW_IA64_NAT = UNW_IA64_GR + 128, /* NaT registers (nat0..nat127) */
|
UNW_IA64_NAT = UNW_IA64_GR + 128, /* NaT registers (nat0..nat127) */
|
||||||
|
@ -62,9 +63,20 @@ typedef enum
|
||||||
UNW_IA64_CFM,
|
UNW_IA64_CFM,
|
||||||
|
|
||||||
/* frame info (read-only): */
|
/* frame info (read-only): */
|
||||||
UNW_IA64_CURRENT_BSP, /* read-only */
|
UNW_IA64_CURRENT_BSP,
|
||||||
|
UNW_IA64_IP,
|
||||||
|
UNW_IA64_SP,
|
||||||
|
UNW_IA64_PROC_START,
|
||||||
|
UNW_IA64_HANDLER,
|
||||||
|
UNW_IA64_LSDA,
|
||||||
|
|
||||||
UNW_TDEP_LAST_REG = UNW_IA64_CURRENT_BSP
|
UNW_TDEP_LAST_REG = UNW_IA64_LSDA,
|
||||||
|
|
||||||
|
UNW_TDEP_IP = UNW_IA64_IP,
|
||||||
|
UNW_TDEP_SP = UNW_IA64_SP,
|
||||||
|
UNW_TDEP_PROC_START = UNW_IA64_PROC_START,
|
||||||
|
UNW_TDEP_HANDLER = UNW_IA64_HANDLER,
|
||||||
|
UNW_TDEP_LSDA = UNW_IA64_LSDA,
|
||||||
}
|
}
|
||||||
ia64_regnum_t;
|
ia64_regnum_t;
|
||||||
|
|
||||||
|
@ -74,12 +86,14 @@ ia64_regnum_t;
|
||||||
typedef struct unw_ia64_table
|
typedef struct unw_ia64_table
|
||||||
{
|
{
|
||||||
const char *name; /* table name (or NULL if none) */
|
const char *name; /* table name (or NULL if none) */
|
||||||
unw_word_t gp; /* global pointer for this load-module */
|
unw_tdep_word_t segbase; /* base for offsets in the unwind table */
|
||||||
unw_word_t segbase; /* base for offsets in the unwind table */
|
unw_tdep_word_t start; /* starting IP covered by table */
|
||||||
unw_word_t length; /* number of entries in unwind table array */
|
unw_tdep_word_t end; /* first IP _not_ covered table */
|
||||||
|
unw_tdep_word_t gp; /* global pointer for this load-module */
|
||||||
|
unw_tdep_word_t length; /* number of entries in unwind table array */
|
||||||
|
|
||||||
/* Local copy of the unwind descriptor table: */
|
/* Pointer to local copy of the unwind descriptor table: */
|
||||||
const struct ia64_unwind_table_entry *array;
|
void *array;
|
||||||
|
|
||||||
/* Local copy of the unwind descriptor information. This is
|
/* Local copy of the unwind descriptor information. This is
|
||||||
initialized such that adding the unwind entry's info_offset
|
initialized such that adding the unwind entry's info_offset
|
||||||
|
|
Loading…
Reference in a new issue