diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-16 22:42:36 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-16 22:42:36 +0000 |
commit | 9b84bf7de848cc4e27b88354c441e4a2bc41abb6 (patch) | |
tree | 0115a87b72de59adf0b97d879e1d5d59187631ab /gcc/except.c | |
parent | 6a0bf73304d36070da7e0a443ebc5b6a1f503d4f (diff) | |
download | gcc-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.c | 131 |
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 |