unwind.h (_Unwind_Ptr): Make 64 bits on IA64 HP-UX.
authorSteve Ellcey <sje@cup.hp.com>
Thu, 15 Aug 2002 18:01:30 +0000 (18:01 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Thu, 15 Aug 2002 18:01:30 +0000 (18:01 +0000)
* 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

gcc/ChangeLog
gcc/unwind-pe.h
gcc/unwind.h

index 20d953fbe490d984878db0fc7dbe678cceee650b..040889a6029c7b2c8868a98cbdc80a01c8da5ac6 100644 (file)
@@ -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
index 01e05ebf34c07efc43d66a8edf4142fe107222a9..d32e506667d6544df7033c24b9eec345c00a6802 100644 (file)
@@ -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;
        }
     }
 
index 765ffb2197b27fafe3603d7a293a6d7992585581..3002d5041743640c719c7466e5058d77bce811d9 100644 (file)
@@ -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