This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch to dwarf2out.c


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 ();
      }
  }
  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]