summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-15 18:01:30 +0000
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-15 18:01:30 +0000
commitd786f066a9d633ca973ecdc02be83e3b2c9d9f8b (patch)
treea82bf7e678d7cddc008d6be93e34e9e9264fe4e7
parentbb37f9719b82ee5913466f26d855f8af7640258b (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/unwind-pe.h16
-rw-r--r--gcc/unwind.h5
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