mirror of git://gcc.gnu.org/git/gcc.git
Minor cleanup of ia64 unwind handler code.
* frame.h (IA64_UNW_EHANDLER, IA64_UNW_UHANDLER): New. * config/ia64/frame-ia64.c (__get_personality): Return zero if neither EHANDLER nor UHANDLER bit is set. (__get_except_table): Likewise. From-SVN: r35922
This commit is contained in:
parent
215e4ee73e
commit
b97644fc89
|
|
@ -1,3 +1,10 @@
|
||||||
|
2000-08-23 Jim Wilson <wilson@cygnus.com>
|
||||||
|
|
||||||
|
* frame.h (IA64_UNW_EHANDLER, IA64_UNW_UHANDLER): New.
|
||||||
|
* config/ia64/frame-ia64.c (__get_personality): Return zero if neither
|
||||||
|
EHANDLER nor UHANDLER bit is set.
|
||||||
|
(__get_except_table): Likewise.
|
||||||
|
|
||||||
2000-08-23 Nick Clifton <nickc@redhat.com>
|
2000-08-23 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* config/arm/lib1funcs.asm: Replace upper case condition codes
|
* config/arm/lib1funcs.asm: Replace upper case condition codes
|
||||||
|
|
|
||||||
|
|
@ -1376,27 +1376,38 @@ __build_ia64_frame_state (pc, frame, bsp, sp, pc_base_ptr)
|
||||||
return unw_info_ptr;
|
return unw_info_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Given an unwind info pointer, return the personailty routine. */
|
/* Given an unwind info pointer, return the personality routine. */
|
||||||
void *
|
void *
|
||||||
__get_personality (ptr)
|
__get_personality (ptr)
|
||||||
unwind_info_ptr *ptr;
|
unwind_info_ptr *ptr;
|
||||||
{
|
{
|
||||||
void **p;
|
void **p;
|
||||||
|
|
||||||
|
/* There is a personality routine only if one of the EHANDLER or UHANDLER
|
||||||
|
bits is set. */
|
||||||
|
if (! (IA64_UNW_HDR_FLAGS (ptr->header)
|
||||||
|
& (IA64_UNW_EHANDLER|IA64_UNW_UHANDLER)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
p = (void **) (ptr->unwind_descriptors
|
p = (void **) (ptr->unwind_descriptors
|
||||||
+ IA64_UNW_HDR_LENGTH (ptr->header) * 8);
|
+ IA64_UNW_HDR_LENGTH (ptr->header) * 8);
|
||||||
return *p;
|
return *p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Given an unwind info pointer, return the exception table. */
|
||||||
void *
|
void *
|
||||||
__get_except_table (ptr)
|
__get_except_table (ptr)
|
||||||
unwind_info_ptr *ptr;
|
unwind_info_ptr *ptr;
|
||||||
{
|
{
|
||||||
void **p, *table;
|
void *table;
|
||||||
p = (void **) (ptr->unwind_descriptors
|
|
||||||
+ IA64_UNW_HDR_LENGTH (ptr->header) * 8);
|
/* If there is no personality, there is no handler data.
|
||||||
/* If there is no personality, there is no handler data. */
|
There is a personality routine only if one of the EHANDLER or UHANDLER
|
||||||
if (*p == 0)
|
bits is set. */
|
||||||
|
if (! (IA64_UNW_HDR_FLAGS (ptr->header)
|
||||||
|
& (IA64_UNW_EHANDLER|IA64_UNW_UHANDLER)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
table = (void *) (ptr->unwind_descriptors
|
table = (void *) (ptr->unwind_descriptors
|
||||||
+ IA64_UNW_HDR_LENGTH (ptr->header) * 8 + 8);
|
+ IA64_UNW_HDR_LENGTH (ptr->header) * 8 + 8);
|
||||||
return table;
|
return table;
|
||||||
|
|
|
||||||
|
|
@ -267,6 +267,10 @@ typedef struct unwind_info_ptr
|
||||||
#define IA64_UNW_HDR_FLAGS(x) (((x) >> 32) & 0xffffUL)
|
#define IA64_UNW_HDR_FLAGS(x) (((x) >> 32) & 0xffffUL)
|
||||||
#define IA64_UNW_HDR_VERSION(x) (((x) >> 48) & 0xffffUL)
|
#define IA64_UNW_HDR_VERSION(x) (((x) >> 48) & 0xffffUL)
|
||||||
|
|
||||||
|
/* Header flag bits, after extraction by IA64_UNW_HDR_FLAGS. */
|
||||||
|
#define IA64_UNW_EHANDLER 0x1
|
||||||
|
#define IA64_UNW_UHANDLER 0x2
|
||||||
|
|
||||||
extern unwind_info_ptr *__build_ia64_frame_state (unsigned char *,
|
extern unwind_info_ptr *__build_ia64_frame_state (unsigned char *,
|
||||||
ia64_frame_state *,
|
ia64_frame_state *,
|
||||||
void *, void *,
|
void *, void *,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue