unwind.h (_Unwind_Ptr): Make 64 bits on IA64 HP-UX.
* gcc/unwind.h (_Unwind_Ptr): Make 64 bits on IA64 HP-UX. (_Unwind_Internal_Ptr): 32 bit version for use in read_encoded_value_with_base. * gcc/unwind-pe.h (read_encoded_value_with_base): Use _Unwind_Internal_Ptr instead of _Unwind_Ptr in order to get the right size. From-SVN: r56351
This commit is contained in:
parent
f7043461db
commit
9ef30f834e
@ -1,3 +1,12 @@
|
||||
2002-08-15 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* gcc/unwind.h (_Unwind_Ptr): Make 64 bits on IA64 HP-UX.
|
||||
(_Unwind_Internal_Ptr): 32 bit version for use in
|
||||
read_encoded_value_with_base.
|
||||
* gcc/unwind-pe.h (read_encoded_value_with_base): Use
|
||||
_Unwind_Internal_Ptr instead of _Unwind_Ptr in order to get the
|
||||
right size.
|
||||
|
||||
2002-08-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* loop.c (scan_loop, move_movables, count_one_set): Cast to avoid
|
||||
|
@ -179,13 +179,13 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
} __attribute__((__packed__));
|
||||
|
||||
union unaligned *u = (union unaligned *) p;
|
||||
_Unwind_Ptr result;
|
||||
_Unwind_Internal_Ptr result;
|
||||
|
||||
if (encoding == DW_EH_PE_aligned)
|
||||
{
|
||||
_Unwind_Ptr a = (_Unwind_Ptr) p;
|
||||
_Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
|
||||
a = (a + sizeof (void *) - 1) & - sizeof(void *);
|
||||
result = *(_Unwind_Ptr *) a;
|
||||
result = *(_Unwind_Internal_Ptr *) a;
|
||||
p = (const unsigned char *) (a + sizeof (void *));
|
||||
}
|
||||
else
|
||||
@ -193,7 +193,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
switch (encoding & 0x0f)
|
||||
{
|
||||
case DW_EH_PE_absptr:
|
||||
result = (_Unwind_Ptr) u->ptr;
|
||||
result = (_Unwind_Internal_Ptr) u->ptr;
|
||||
p += sizeof (void *);
|
||||
break;
|
||||
|
||||
@ -201,7 +201,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
{
|
||||
_Unwind_Word tmp;
|
||||
p = read_uleb128 (p, &tmp);
|
||||
result = (_Unwind_Ptr) tmp;
|
||||
result = (_Unwind_Internal_Ptr) tmp;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -209,7 +209,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
{
|
||||
_Unwind_Sword tmp;
|
||||
p = read_sleb128 (p, &tmp);
|
||||
result = (_Unwind_Ptr) tmp;
|
||||
result = (_Unwind_Internal_Ptr) tmp;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -246,9 +246,9 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
|
||||
if (result != 0)
|
||||
{
|
||||
result += ((encoding & 0x70) == DW_EH_PE_pcrel
|
||||
? (_Unwind_Ptr) u : base);
|
||||
? (_Unwind_Internal_Ptr) u : base);
|
||||
if (encoding & DW_EH_PE_indirect)
|
||||
result = *(_Unwind_Ptr *) result;
|
||||
result = *(_Unwind_Internal_Ptr *) result;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,12 @@ extern "C" {
|
||||
inefficient for 32-bit and smaller machines. */
|
||||
typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
|
||||
typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
|
||||
#if defined(__ia64__) && defined(__hpux__)
|
||||
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
|
||||
#else
|
||||
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
|
||||
#endif
|
||||
typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
|
||||
|
||||
/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
|
||||
consumer of an exception. We'll go along with this for now even on
|
||||
|
Loading…
Reference in New Issue
Block a user