diff options
author | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-15 18:01:30 +0000 |
---|---|---|
committer | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-15 18:01:30 +0000 |
commit | d786f066a9d633ca973ecdc02be83e3b2c9d9f8b (patch) | |
tree | a82bf7e678d7cddc008d6be93e34e9e9264fe4e7 | |
parent | bb37f9719b82ee5913466f26d855f8af7640258b (diff) | |
download | gcc-d786f066a9d633ca973ecdc02be83e3b2c9d9f8b.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56351 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/unwind-pe.h | 16 | ||||
-rw-r--r-- | gcc/unwind.h | 5 |
3 files changed, 22 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 20d953fbe49..040889a6029 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/unwind-pe.h b/gcc/unwind-pe.h index 01e05ebf34c..d32e506667d 100644 --- a/gcc/unwind-pe.h +++ b/gcc/unwind-pe.h @@ -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; } } diff --git a/gcc/unwind.h b/gcc/unwind.h index 765ffb2197b..3002d504174 100644 --- a/gcc/unwind.h +++ b/gcc/unwind.h @@ -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 |