Commit 9ef30f83 by Steve Ellcey Committed by Steve Ellcey

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
parent f7043461
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> 2002-08-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* loop.c (scan_loop, move_movables, count_one_set): Cast to avoid * 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, ...@@ -179,13 +179,13 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
} __attribute__((__packed__)); } __attribute__((__packed__));
union unaligned *u = (union unaligned *) p; union unaligned *u = (union unaligned *) p;
_Unwind_Ptr result; _Unwind_Internal_Ptr result;
if (encoding == DW_EH_PE_aligned) 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 *); a = (a + sizeof (void *) - 1) & - sizeof(void *);
result = *(_Unwind_Ptr *) a; result = *(_Unwind_Internal_Ptr *) a;
p = (const unsigned char *) (a + sizeof (void *)); p = (const unsigned char *) (a + sizeof (void *));
} }
else else
...@@ -193,7 +193,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, ...@@ -193,7 +193,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
switch (encoding & 0x0f) switch (encoding & 0x0f)
{ {
case DW_EH_PE_absptr: case DW_EH_PE_absptr:
result = (_Unwind_Ptr) u->ptr; result = (_Unwind_Internal_Ptr) u->ptr;
p += sizeof (void *); p += sizeof (void *);
break; break;
...@@ -201,7 +201,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, ...@@ -201,7 +201,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
{ {
_Unwind_Word tmp; _Unwind_Word tmp;
p = read_uleb128 (p, &tmp); p = read_uleb128 (p, &tmp);
result = (_Unwind_Ptr) tmp; result = (_Unwind_Internal_Ptr) tmp;
} }
break; break;
...@@ -209,7 +209,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, ...@@ -209,7 +209,7 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
{ {
_Unwind_Sword tmp; _Unwind_Sword tmp;
p = read_sleb128 (p, &tmp); p = read_sleb128 (p, &tmp);
result = (_Unwind_Ptr) tmp; result = (_Unwind_Internal_Ptr) tmp;
} }
break; break;
...@@ -246,9 +246,9 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, ...@@ -246,9 +246,9 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
if (result != 0) if (result != 0)
{ {
result += ((encoding & 0x70) == DW_EH_PE_pcrel result += ((encoding & 0x70) == DW_EH_PE_pcrel
? (_Unwind_Ptr) u : base); ? (_Unwind_Internal_Ptr) u : base);
if (encoding & DW_EH_PE_indirect) if (encoding & DW_EH_PE_indirect)
result = *(_Unwind_Ptr *) result; result = *(_Unwind_Internal_Ptr *) result;
} }
} }
......
...@@ -31,7 +31,12 @@ extern "C" { ...@@ -31,7 +31,12 @@ extern "C" {
inefficient for 32-bit and smaller machines. */ inefficient for 32-bit and smaller machines. */
typedef unsigned _Unwind_Word __attribute__((__mode__(__word__))); typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
typedef signed _Unwind_Sword __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__))); 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 /* @@@ 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 consumer of an exception. We'll go along with this for now even on
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment