summaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-16 22:42:36 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-16 22:42:36 +0000
commit9b84bf7de848cc4e27b88354c441e4a2bc41abb6 (patch)
tree0115a87b72de59adf0b97d879e1d5d59187631ab /gcc/except.c
parent6a0bf73304d36070da7e0a443ebc5b6a1f503d4f (diff)
downloadgcc-9b84bf7de848cc4e27b88354c441e4a2bc41abb6.tar.gz
* except.c (eh_data_format_name): Move to ...
* dwarf2asm.c: ... here. Use designated initializers if available. (dw2_asm_output_encoded_addr_rtx): Accept varargs commentary. * dwarf2asm.h: Update declarations. * dwarf2out.c (output_cfi) [DW_CFA_set_loc]: If for_eh, mind ASM_PREFERRED_EH_DATA_FORMAT. (output_call_frame_info): Likewise. Use 'L' augmentation for the LSDA encoding. * unwind-dw2-fde.h (struct fde_vector): New. (struct old_object): Rename from struct object. (struct object): New. (__register_frame_info_bases): Declare. (__register_frame_info_table_bases): Declare. (struct dwarf_fde): Remove explicit pc_begin/pc_range members. * unwind-dw2-fde.c (objects): Remove. (unseen_objects, seen_objects): New. (__register_frame_info_bases): New. (__register_frame_info): Use it. (__register_frame_info_table_bases): New. (__register_frame_info_table): Use it. (__deregister_frame_info): Rewrite for changed object struct. (base_from_object, get_cie_encoding, get_fde_encoding): New. (fde_unencoded_compare): Rename from fde_compare; uninline. (fde_single_encoding_compare, fde_mixed_encoding_compare): New. (start_fde_sort): Adjust for new definition of fde_vector. (fde_insert): Likewise. (end_fde_sort): Likewise. Select comparison function based on properties of the object. (fde_split): Take object and fde_compare_t arguments. (frame_heapsort, fde_merge): Likewise. (classify_object_over_fdes): Rename from count_fdes. Handle encoded pointers. Collect encoding, mixed_encoding, and pc_begin for the object. (add_fdes): Handle encoded pointers. (init_object): Rename from frame_init. Update for new struct object. (linear_search_fdes): Rename from search_fdes. Handle encoded pointers. (binary_search_unencoded_fdes): Broken out from _Unwind_Find_FDE. (binary_search_single_encoding_fdes): New. (binary_search_mixed_encoding_fdes): New. (search_object): New. (_Unwind_Find_FDE): Update for new struct object. Fill in the dwarf_eh_bases. * unwind-dw2.c: Include unwind-pe.h. Constify all pointers iterating over EH data. (_Unwind_FrameState): Remove saw_lsda, addr_encoding. Add fde_encoding, lsda_encoding. (read_uleb128, read_sleb128): Remove. (read_encoded_pointer): Remove. All callers use read_encoded_value. (extract_cie_info): Set lsda_encoding from 'L' augmentation. (uw_frame_state_for): Don't set bases.func. Handle encoded fde pointers. * unwind-pe.h: Add "struct" to _Unwind_Context references. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42176 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c131
1 files changed, 2 insertions, 129 deletions
diff --git a/gcc/except.c b/gcc/except.c
index 3afb1edd4f0..b7771367149 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -330,7 +330,6 @@ static int add_call_site PARAMS ((rtx, int));
static void push_uleb128 PARAMS ((varray_type *,
unsigned int));
static void push_sleb128 PARAMS ((varray_type *, int));
-static const char *eh_data_format_name PARAMS ((int));
#ifndef HAVE_AS_LEB128
static int dw2_size_of_call_site_table PARAMS ((void));
static int sjlj_size_of_call_site_table PARAMS ((void));
@@ -3367,133 +3366,6 @@ push_sleb128 (data_area, value)
}
-static const char *
-eh_data_format_name (format)
- int format;
-{
- switch (format)
- {
- case DW_EH_PE_absptr: return "absolute";
- case DW_EH_PE_omit: return "omit";
-
- case DW_EH_PE_uleb128: return "uleb128";
- case DW_EH_PE_udata2: return "udata2";
- case DW_EH_PE_udata4: return "udata4";
- case DW_EH_PE_udata8: return "udata8";
- case DW_EH_PE_sleb128: return "sleb128";
- case DW_EH_PE_sdata2: return "sdata2";
- case DW_EH_PE_sdata4: return "sdata4";
- case DW_EH_PE_sdata8: return "sdata8";
-
- case DW_EH_PE_uleb128 | DW_EH_PE_pcrel: return "pcrel uleb128";
- case DW_EH_PE_udata2 | DW_EH_PE_pcrel: return "pcrel udata2";
- case DW_EH_PE_udata4 | DW_EH_PE_pcrel: return "pcrel udata4";
- case DW_EH_PE_udata8 | DW_EH_PE_pcrel: return "pcrel udata8";
- case DW_EH_PE_sleb128 | DW_EH_PE_pcrel: return "pcrel sleb128";
- case DW_EH_PE_sdata2 | DW_EH_PE_pcrel: return "pcrel sdata2";
- case DW_EH_PE_sdata4 | DW_EH_PE_pcrel: return "pcrel sdata4";
- case DW_EH_PE_sdata8 | DW_EH_PE_pcrel: return "pcrel sdata8";
-
- case DW_EH_PE_uleb128 | DW_EH_PE_textrel: return "textrel uleb128";
- case DW_EH_PE_udata2 | DW_EH_PE_textrel: return "textrel udata2";
- case DW_EH_PE_udata4 | DW_EH_PE_textrel: return "textrel udata4";
- case DW_EH_PE_udata8 | DW_EH_PE_textrel: return "textrel udata8";
- case DW_EH_PE_sleb128 | DW_EH_PE_textrel: return "textrel sleb128";
- case DW_EH_PE_sdata2 | DW_EH_PE_textrel: return "textrel sdata2";
- case DW_EH_PE_sdata4 | DW_EH_PE_textrel: return "textrel sdata4";
- case DW_EH_PE_sdata8 | DW_EH_PE_textrel: return "textrel sdata8";
-
- case DW_EH_PE_uleb128 | DW_EH_PE_datarel: return "datarel uleb128";
- case DW_EH_PE_udata2 | DW_EH_PE_datarel: return "datarel udata2";
- case DW_EH_PE_udata4 | DW_EH_PE_datarel: return "datarel udata4";
- case DW_EH_PE_udata8 | DW_EH_PE_datarel: return "datarel udata8";
- case DW_EH_PE_sleb128 | DW_EH_PE_datarel: return "datarel sleb128";
- case DW_EH_PE_sdata2 | DW_EH_PE_datarel: return "datarel sdata2";
- case DW_EH_PE_sdata4 | DW_EH_PE_datarel: return "datarel sdata4";
- case DW_EH_PE_sdata8 | DW_EH_PE_datarel: return "datarel sdata8";
-
- case DW_EH_PE_uleb128 | DW_EH_PE_funcrel: return "funcrel uleb128";
- case DW_EH_PE_udata2 | DW_EH_PE_funcrel: return "funcrel udata2";
- case DW_EH_PE_udata4 | DW_EH_PE_funcrel: return "funcrel udata4";
- case DW_EH_PE_udata8 | DW_EH_PE_funcrel: return "funcrel udata8";
- case DW_EH_PE_sleb128 | DW_EH_PE_funcrel: return "funcrel sleb128";
- case DW_EH_PE_sdata2 | DW_EH_PE_funcrel: return "funcrel sdata2";
- case DW_EH_PE_sdata4 | DW_EH_PE_funcrel: return "funcrel sdata4";
- case DW_EH_PE_sdata8 | DW_EH_PE_funcrel: return "funcrel sdata8";
-
- case DW_EH_PE_indirect | DW_EH_PE_uleb128 | DW_EH_PE_pcrel:
- return "indirect pcrel uleb128";
- case DW_EH_PE_indirect | DW_EH_PE_udata2 | DW_EH_PE_pcrel:
- return "indirect pcrel udata2";
- case DW_EH_PE_indirect | DW_EH_PE_udata4 | DW_EH_PE_pcrel:
- return "indirect pcrel udata4";
- case DW_EH_PE_indirect | DW_EH_PE_udata8 | DW_EH_PE_pcrel:
- return "indirect pcrel udata8";
- case DW_EH_PE_indirect | DW_EH_PE_sleb128 | DW_EH_PE_pcrel:
- return "indirect pcrel sleb128";
- case DW_EH_PE_indirect | DW_EH_PE_sdata2 | DW_EH_PE_pcrel:
- return "indirect pcrel sdata2";
- case DW_EH_PE_indirect | DW_EH_PE_sdata4 | DW_EH_PE_pcrel:
- return "indirect pcrel sdata4";
- case DW_EH_PE_indirect | DW_EH_PE_sdata8 | DW_EH_PE_pcrel:
- return "indirect pcrel sdata8";
-
- case DW_EH_PE_indirect | DW_EH_PE_uleb128 | DW_EH_PE_textrel:
- return "indirect textrel uleb128";
- case DW_EH_PE_indirect | DW_EH_PE_udata2 | DW_EH_PE_textrel:
- return "indirect textrel udata2";
- case DW_EH_PE_indirect | DW_EH_PE_udata4 | DW_EH_PE_textrel:
- return "indirect textrel udata4";
- case DW_EH_PE_indirect | DW_EH_PE_udata8 | DW_EH_PE_textrel:
- return "indirect textrel udata8";
- case DW_EH_PE_indirect | DW_EH_PE_sleb128 | DW_EH_PE_textrel:
- return "indirect textrel sleb128";
- case DW_EH_PE_indirect | DW_EH_PE_sdata2 | DW_EH_PE_textrel:
- return "indirect textrel sdata2";
- case DW_EH_PE_indirect | DW_EH_PE_sdata4 | DW_EH_PE_textrel:
- return "indirect textrel sdata4";
- case DW_EH_PE_indirect | DW_EH_PE_sdata8 | DW_EH_PE_textrel:
- return "indirect textrel sdata8";
-
- case DW_EH_PE_indirect | DW_EH_PE_uleb128 | DW_EH_PE_datarel:
- return "indirect datarel uleb128";
- case DW_EH_PE_indirect | DW_EH_PE_udata2 | DW_EH_PE_datarel:
- return "indirect datarel udata2";
- case DW_EH_PE_indirect | DW_EH_PE_udata4 | DW_EH_PE_datarel:
- return "indirect datarel udata4";
- case DW_EH_PE_indirect | DW_EH_PE_udata8 | DW_EH_PE_datarel:
- return "indirect datarel udata8";
- case DW_EH_PE_indirect | DW_EH_PE_sleb128 | DW_EH_PE_datarel:
- return "indirect datarel sleb128";
- case DW_EH_PE_indirect | DW_EH_PE_sdata2 | DW_EH_PE_datarel:
- return "indirect datarel sdata2";
- case DW_EH_PE_indirect | DW_EH_PE_sdata4 | DW_EH_PE_datarel:
- return "indirect datarel sdata4";
- case DW_EH_PE_indirect | DW_EH_PE_sdata8 | DW_EH_PE_datarel:
- return "indirect datarel sdata8";
-
- case DW_EH_PE_indirect | DW_EH_PE_uleb128 | DW_EH_PE_funcrel:
- return "indirect funcrel uleb128";
- case DW_EH_PE_indirect | DW_EH_PE_udata2 | DW_EH_PE_funcrel:
- return "indirect funcrel udata2";
- case DW_EH_PE_indirect | DW_EH_PE_udata4 | DW_EH_PE_funcrel:
- return "indirect funcrel udata4";
- case DW_EH_PE_indirect | DW_EH_PE_udata8 | DW_EH_PE_funcrel:
- return "indirect funcrel udata8";
- case DW_EH_PE_indirect | DW_EH_PE_sleb128 | DW_EH_PE_funcrel:
- return "indirect funcrel sleb128";
- case DW_EH_PE_indirect | DW_EH_PE_sdata2 | DW_EH_PE_funcrel:
- return "indirect funcrel sdata2";
- case DW_EH_PE_indirect | DW_EH_PE_sdata4 | DW_EH_PE_funcrel:
- return "indirect funcrel sdata4";
- case DW_EH_PE_indirect | DW_EH_PE_sdata8 | DW_EH_PE_funcrel:
- return "indirect funcrel sdata8";
-
- default:
- abort ();
- }
-}
-
#ifndef HAVE_AS_LEB128
static int
dw2_size_of_call_site_table ()
@@ -3767,7 +3639,8 @@ output_function_exception_table ()
dw2_asm_output_encoded_addr_rtx (tt_format,
expand_expr (type, NULL_RTX, VOIDmode,
- EXPAND_INITIALIZER));
+ EXPAND_INITIALIZER),
+ NULL);
}
#ifdef HAVE_AS_LEB128