From 5382f896a041ec923b2c7ebec7bb106e85c15186 Mon Sep 17 00:00:00 2001 From: rth Date: Sat, 12 May 2001 06:17:31 +0000 Subject: [PATCH] * exception.cc: Include unwind-pe.h. Remove all pointer encoding logic. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41983 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 5 ++ libjava/exception.cc | 169 +-------------------------------------------------- 2 files changed, 6 insertions(+), 168 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index bb22501..ba6ba98 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2001-05-11 Richard Henderson + + * exception.cc: Include unwind-pe.h. Remove all pointer + encoding logic. + 2001-05-10 Tom Tromey * Makefile.in: Rebuilt. diff --git a/libjava/exception.cc b/libjava/exception.cc index ff58be1..d734906 100644 --- a/libjava/exception.cc +++ b/libjava/exception.cc @@ -115,174 +115,7 @@ _Jv_Throw (jthrowable value) } -// ??? 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" struct lsda_header_info { -- 2.7.4