Makefile.in (OBJS): Add dwarf2asm.o.
* Makefile.in (OBJS): Add dwarf2asm.o.
* dwarf2asm.c, dwarf2asm.h: New files.
* dwarf2out.c (*): Use them.
(size_of_uleb128, size_of_sleb128): Remove.
(output_uleb128, output_sleb128): Remove.
(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
(dwarf2out_frame_debug): Remove unused variables.
(output_loc_operands): Don't abort on 8 byte constants if
host integers are wide enough.
(output_symbolic_ref): Remove.
(size_of_die): Don't assume 4 byte host integers.
(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
and end labels.
(add_const_value_attribute) [CONST_INT]: Verify we're not doing
something stupid with HOST_WIDE_INT to long truncation.
[CONST_DOUBLE]: Likewise.
* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
* config/arm/unknown-elf.h: Likewise.
* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
(ASM_OUTPUT_DWARF_OFFSET): Remove.
* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.
From-SVN: r40197
2001-03-02 21:17:07 -05:00
|
|
|
/* Dwarf2 assembler output helper routines.
|
|
|
|
Copyright (C) 2001 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
This file is part of GNU CC.
|
|
|
|
|
|
|
|
GNU CC is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
|
|
any later version.
|
|
|
|
|
|
|
|
GNU CC is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with GNU CC; see the file COPYING. If not, write to
|
|
|
|
the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
|
|
|
|
|
|
|
|
/* ??? Format checking yields "null format string" warnings, which is
|
|
|
|
the way these routines are signaled that there is no associated
|
|
|
|
debug information. So the attributes are commented out. */
|
|
|
|
|
|
|
|
extern void dw2_asm_output_data PARAMS ((int, unsigned HOST_WIDE_INT,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_delta PARAMS ((int, const char *,
|
|
|
|
const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_4 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_offset PARAMS ((int, const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_pcrel PARAMS ((int, const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
2001-03-15 20:14:47 -05:00
|
|
|
extern void dw2_asm_output_addr PARAMS ((int, const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
Makefile.in (OBJS): Add dwarf2asm.o.
* Makefile.in (OBJS): Add dwarf2asm.o.
* dwarf2asm.c, dwarf2asm.h: New files.
* dwarf2out.c (*): Use them.
(size_of_uleb128, size_of_sleb128): Remove.
(output_uleb128, output_sleb128): Remove.
(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
(dwarf2out_frame_debug): Remove unused variables.
(output_loc_operands): Don't abort on 8 byte constants if
host integers are wide enough.
(output_symbolic_ref): Remove.
(size_of_die): Don't assume 4 byte host integers.
(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
and end labels.
(add_const_value_attribute) [CONST_INT]: Verify we're not doing
something stupid with HOST_WIDE_INT to long truncation.
[CONST_DOUBLE]: Likewise.
* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
* config/arm/unknown-elf.h: Likewise.
* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
(ASM_OUTPUT_DWARF_OFFSET): Remove.
* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.
From-SVN: r40197
2001-03-02 21:17:07 -05:00
|
|
|
extern void dw2_asm_output_addr_rtx PARAMS ((int, rtx,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
except.c (eh_data_format_name): Move to ...
* 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.
From-SVN: r42176
2001-05-16 18:42:36 -04:00
|
|
|
extern void dw2_asm_output_encoded_addr_rtx PARAMS ((int, rtx,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
2001-05-12 02:03:20 -04:00
|
|
|
|
Makefile.in (OBJS): Add dwarf2asm.o.
* Makefile.in (OBJS): Add dwarf2asm.o.
* dwarf2asm.c, dwarf2asm.h: New files.
* dwarf2out.c (*): Use them.
(size_of_uleb128, size_of_sleb128): Remove.
(output_uleb128, output_sleb128): Remove.
(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
(dwarf2out_frame_debug): Remove unused variables.
(output_loc_operands): Don't abort on 8 byte constants if
host integers are wide enough.
(output_symbolic_ref): Remove.
(size_of_die): Don't assume 4 byte host integers.
(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
and end labels.
(add_const_value_attribute) [CONST_INT]: Verify we're not doing
something stupid with HOST_WIDE_INT to long truncation.
[CONST_DOUBLE]: Likewise.
* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
* config/arm/unknown-elf.h: Likewise.
* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
(ASM_OUTPUT_DWARF_OFFSET): Remove.
* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.
From-SVN: r40197
2001-03-02 21:17:07 -05:00
|
|
|
extern void dw2_asm_output_nstring PARAMS ((const char *, size_t,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_data_uleb128 PARAMS ((unsigned HOST_WIDE_INT,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_2 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_data_sleb128 PARAMS ((HOST_WIDE_INT,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_2 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_delta_uleb128 PARAMS ((const char *, const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
|
|
|
extern void dw2_asm_output_delta_sleb128 PARAMS ((const char *, const char *,
|
|
|
|
const char *, ...))
|
|
|
|
/* ATTRIBUTE_PRINTF_3 */;
|
|
|
|
|
|
|
|
extern int size_of_uleb128 PARAMS ((unsigned HOST_WIDE_INT));
|
|
|
|
extern int size_of_sleb128 PARAMS ((HOST_WIDE_INT));
|
2001-05-13 00:30:09 -04:00
|
|
|
extern int size_of_encoded_value PARAMS ((int));
|
except.c (eh_data_format_name): Move to ...
* 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.
From-SVN: r42176
2001-05-16 18:42:36 -04:00
|
|
|
extern const char *eh_data_format_name PARAMS ((int));
|
2001-05-12 02:03:20 -04:00
|
|
|
|
|
|
|
extern void dw2_output_indirect_constants PARAMS ((void));
|