This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Patch to dwarf2out.c
- To: gcc-patches at gcc dot gnu dot org
- Subject: Patch to dwarf2out.c
- From: Jason Merrill <jason at redhat dot com>
- Date: Wed, 28 Jun 2000 17:18:21 -0400
This should fix the recent build problems on some targets that don't
support d2 debugging.
2000-06-28 Jason Merrill <jason@redhat.com>
* dwarf2out.c (output_loc_operands): Don't support >1 byte output
unless DWARF2_DEBUGGING_INFO is defined.
(ASM_OUTPUT_DWARF_*): Wrap normal output defs with #ifndefs.
Index: dwarf2out.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/dwarf2out.c,v
retrieving revision 1.181
diff -c -p -r1.181 dwarf2out.c
*** dwarf2out.c 2000/06/27 19:09:42 1.181
--- dwarf2out.c 2000/06/28 21:17:51
*************** static void def_cfa_1 PARAMS ((const
*** 464,504 ****
--- 464,526 ----
/* We don't have unaligned support, let's hope the normal output works for
.debug_frame. */
+ #ifndef ASM_OUTPUT_DWARF_ADDR
#define ASM_OUTPUT_DWARF_ADDR(FILE,LABEL) \
assemble_integer (gen_rtx_SYMBOL_REF (Pmode, LABEL), DWARF2_ADDR_SIZE, 1)
+ #endif
+
+ #ifndef ASM_OUTPUT_DWARF_ADDR_CONST
+ #define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) ASM_OUTPUT_DWARF_ADDR (FILE,RTX)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_OFFSET4
#define ASM_OUTPUT_DWARF_OFFSET4(FILE,LABEL) \
assemble_integer (gen_rtx_SYMBOL_REF (SImode, LABEL), 4, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_OFFSET
#define ASM_OUTPUT_DWARF_OFFSET(FILE,LABEL) \
assemble_integer (gen_rtx_SYMBOL_REF (SImode, LABEL), 4, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_DELTA2
#define ASM_OUTPUT_DWARF_DELTA2(FILE,LABEL1,LABEL2) \
assemble_integer (gen_rtx_MINUS (HImode, \
gen_rtx_SYMBOL_REF (Pmode, LABEL1), \
gen_rtx_SYMBOL_REF (Pmode, LABEL2)), \
2, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_DELTA4
#define ASM_OUTPUT_DWARF_DELTA4(FILE,LABEL1,LABEL2) \
assemble_integer (gen_rtx_MINUS (SImode, \
gen_rtx_SYMBOL_REF (Pmode, LABEL1), \
gen_rtx_SYMBOL_REF (Pmode, LABEL2)), \
4, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_ADDR_DELTA
#define ASM_OUTPUT_DWARF_ADDR_DELTA(FILE,LABEL1,LABEL2) \
assemble_integer (gen_rtx_MINUS (Pmode, \
gen_rtx_SYMBOL_REF (Pmode, LABEL1), \
gen_rtx_SYMBOL_REF (Pmode, LABEL2)), \
DWARF2_ADDR_SIZE, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_DELTA
#define ASM_OUTPUT_DWARF_DELTA(FILE,LABEL1,LABEL2) \
ASM_OUTPUT_DWARF_DELTA4 (FILE,LABEL1,LABEL2)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_DATA2
#define ASM_OUTPUT_DWARF_DATA2(FILE,VALUE) \
assemble_integer (GEN_INT (VALUE), 2, 1)
+ #endif
+ #ifndef ASM_OUTPUT_DWARF_DATA4
#define ASM_OUTPUT_DWARF_DATA4(FILE,VALUE) \
assemble_integer (GEN_INT (VALUE), 4, 1)
+ #endif
#endif /* UNALIGNED_INT_ASM_OP */
*************** output_loc_operands (loc)
*** 2599,2613 ****
switch (loc->dw_loc_opc)
{
case DW_OP_addr:
ASM_OUTPUT_DWARF_ADDR_CONST (asm_out_file, val1->v.val_addr);
fputc ('\n', asm_out_file);
break;
- case DW_OP_const1u:
- case DW_OP_const1s:
- ASM_OUTPUT_DWARF_DATA1 (asm_out_file, val1->v.val_flag);
- fputc ('\n', asm_out_file);
- break;
case DW_OP_const2u:
case DW_OP_const2s:
ASM_OUTPUT_DWARF_DATA2 (asm_out_file, val1->v.val_int);
--- 2621,2635 ----
switch (loc->dw_loc_opc)
{
+ #ifdef DWARF2_DEBUGGING_INFO
+ /* We currently don't make any attempt to make sure these are
+ aligned properly like we do for the main unwind info, so
+ don't support emitting things larger than a byte if we're
+ only doing unwinding. */
case DW_OP_addr:
ASM_OUTPUT_DWARF_ADDR_CONST (asm_out_file, val1->v.val_addr);
fputc ('\n', asm_out_file);
break;
case DW_OP_const2u:
case DW_OP_const2s:
ASM_OUTPUT_DWARF_DATA2 (asm_out_file, val1->v.val_int);
*************** output_loc_operands (loc)
*** 2623,2628 ****
--- 2645,2661 ----
abort ();
fputc ('\n', asm_out_file);
break;
+ case DW_OP_skip:
+ case DW_OP_bra:
+ ASM_OUTPUT_DWARF_DATA2 (asm_out_file, val1->v.val_int);
+ fputc ('\n', asm_out_file);
+ break;
+ #endif
+ case DW_OP_const1u:
+ case DW_OP_const1s:
+ ASM_OUTPUT_DWARF_DATA1 (asm_out_file, val1->v.val_flag);
+ fputc ('\n', asm_out_file);
+ break;
case DW_OP_constu:
output_uleb128 (val1->v.val_unsigned);
fputc ('\n', asm_out_file);
*************** output_loc_operands (loc)
*** 2639,2649 ****
output_uleb128 (val1->v.val_unsigned);
fputc ('\n', asm_out_file);
break;
- case DW_OP_skip:
- case DW_OP_bra:
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, val1->v.val_int);
- fputc ('\n', asm_out_file);
- break;
case DW_OP_breg0:
case DW_OP_breg1:
case DW_OP_breg2:
--- 2672,2677 ----
*************** output_loc_operands (loc)
*** 2703,2709 ****
fputc ('\n', asm_out_file);
break;
default:
! break;
}
}
--- 2731,2737 ----
fputc ('\n', asm_out_file);
break;
default:
! abort ();
}
}