OSDN Git Service

* exception.cc: Include unwind-pe.h. Remove all pointer
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 May 2001 06:17:31 +0000 (06:17 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 May 2001 06:17:31 +0000 (06:17 +0000)
        encoding logic.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41983 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/exception.cc

index bb22501..ba6ba98 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-11  Richard Henderson  <rth@redhat.com>
+
+        * exception.cc: Include unwind-pe.h.  Remove all pointer
+       encoding logic.
+
 2001-05-10  Tom Tromey  <tromey@redhat.com>
 
        * Makefile.in: Rebuilt.
index ff58be1..d734906 100644 (file)
@@ -115,174 +115,7 @@ _Jv_Throw (jthrowable value)
 }
 
 \f
-// ??? These ought to go somewhere else dwarf2 or dwarf2eh related.
-
-// Pointer encodings.
-#define DW_EH_PE_absptr         0x00
-#define DW_EH_PE_omit           0xff
-
-#define DW_EH_PE_uleb128        0x01
-#define DW_EH_PE_udata2         0x02
-#define DW_EH_PE_udata4         0x03
-#define DW_EH_PE_udata8         0x04
-#define DW_EH_PE_sleb128        0x09
-#define DW_EH_PE_sdata2         0x0A
-#define DW_EH_PE_sdata4         0x0B
-#define DW_EH_PE_sdata8         0x0C
-#define DW_EH_PE_signed         0x08
-
-#define DW_EH_PE_pcrel          0x10
-#define DW_EH_PE_textrel        0x20
-#define DW_EH_PE_datarel        0x30
-#define DW_EH_PE_funcrel        0x40
-
-static unsigned int
-size_of_encoded_value (unsigned char encoding)
-{
-  switch (encoding & 0x07)
-    {
-    case DW_EH_PE_absptr:
-      return sizeof (void *);
-    case DW_EH_PE_udata2:
-      return 2;
-    case DW_EH_PE_udata4:
-      return 4;
-    case DW_EH_PE_udata8:
-      return 8;
-    }
-  abort ();
-}
-
-static const unsigned char *
-read_encoded_value (_Unwind_Context *context, unsigned char encoding,
-                   const unsigned char *p, _Unwind_Ptr *val)
-{
-  union unaligned
-    {
-      void *ptr;
-      unsigned u2 __attribute__ ((mode (HI)));
-      unsigned u4 __attribute__ ((mode (SI)));
-      unsigned u8 __attribute__ ((mode (DI)));
-      signed s2 __attribute__ ((mode (HI)));
-      signed s4 __attribute__ ((mode (SI)));
-      signed s8 __attribute__ ((mode (DI)));
-    } __attribute__((__packed__));
-
-  union unaligned *u = (union unaligned *) p;
-  _Unwind_Ptr result;
-
-  switch (encoding & 0x0f)
-    {
-    case DW_EH_PE_absptr:
-      result = (_Unwind_Ptr) u->ptr;
-      p += sizeof (void *);
-      break;
-
-    case DW_EH_PE_uleb128:
-      {
-       unsigned int shift = 0;
-       unsigned char byte;
-
-       result = 0;
-       do
-         {
-           byte = *p++;
-           result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
-           shift += 7;
-         }
-       while (byte & 0x80);
-      }
-      break;
-
-    case DW_EH_PE_sleb128:
-      {
-       unsigned int shift = 0;
-       unsigned char byte;
-
-       result = 0;
-       do
-         {
-           byte = *p++;
-           result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
-           shift += 7;
-         }
-       while (byte & 0x80);
-
-       if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
-         result |= -(1L << shift);
-      }
-      break;
-
-    case DW_EH_PE_udata2:
-      result = u->u2;
-      p += 2;
-      break;
-    case DW_EH_PE_udata4:
-      result = u->u4;
-      p += 4;
-      break;
-    case DW_EH_PE_udata8:
-      result = u->u8;
-      p += 8;
-      break;
-
-    case DW_EH_PE_sdata2:
-      result = u->s2;
-      p += 2;
-      break;
-    case DW_EH_PE_sdata4:
-      result = u->s4;
-      p += 4;
-      break;
-    case DW_EH_PE_sdata8:
-      result = u->s8;
-      p += 8;
-      break;
-
-    default:
-      abort ();
-    }
-
-  if (result != 0)
-    switch (encoding & 0xf0)
-      {
-      case DW_EH_PE_absptr:
-       break;
-
-      case DW_EH_PE_pcrel:
-       // Define as relative to the beginning of the pointer.
-       result += (_Unwind_Ptr) u;
-       break;
-
-      case DW_EH_PE_textrel:
-      case DW_EH_PE_datarel:
-       // FIXME.
-       abort ();
-
-      case DW_EH_PE_funcrel:
-       result += _Unwind_GetRegionStart (context);
-       break;
-
-      default:
-       abort ();
-      }
-
-  *val = result;
-  return p;
-}
-
-static inline const unsigned char *
-read_uleb128 (const unsigned char *p, _Unwind_Ptr *val)
-{
-  return read_encoded_value (0, DW_EH_PE_uleb128, p, val);
-}
-
-static inline const unsigned char *
-read_sleb128 (const unsigned char *p, _Unwind_Ptr *val)
-{
-  return read_encoded_value (0, DW_EH_PE_sleb128, p, val);
-}
-
+#include "unwind-pe.h"
 \f
 struct lsda_header_info
 {