aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-01-29 19:19:23 -0500
committerJason Merrill <jason@gcc.gnu.org>2002-01-29 19:19:23 -0500
commit6bb289655c9d5ef52bdd201010f97dd16cd7f091 (patch)
tree0a433f17b1acf59000b7b9fa78e6d2ac2944803c
parent37060e78fa4490c38254d37d7e7af8bcade0409d (diff)
downloadgcc-6bb289655c9d5ef52bdd201010f97dd16cd7f091.zip
gcc-6bb289655c9d5ef52bdd201010f97dd16cd7f091.tar.gz
gcc-6bb289655c9d5ef52bdd201010f97dd16cd7f091.tar.bz2
dwarf2out.c (dwarf_cfi_name): Add other DWARF 3 codes.
* dwarf2out.c (dwarf_cfi_name): Add other DWARF 3 codes. (output_cfi): Likewise. Disable DW_CFA_GNU_negative_offset_extended. (reg_save): Use DW_CFA_offset_extended_sf instead. * dwarf2out.c (dwarf2out_finish): Don't abort if there were errors. From-SVN: r49334
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/dwarf2out.c38
2 files changed, 39 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 629d1d8..0e5fe05 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2002-01-28 Jason Merrill <jason@redhat.com>
+
+ * dwarf2out.c (dwarf_cfi_name): Add other DWARF 3 codes.
+ (output_cfi): Likewise. Disable DW_CFA_GNU_negative_offset_extended.
+ (reg_save): Use DW_CFA_offset_extended_sf instead.
+
+ * dwarf2out.c (dwarf2out_finish): Don't abort if there were errors.
+
2002-01-29 Jakub Jelinek <jakub@redhat.com>
* cselib.c (cselib_record_sets): Use IF_THEN_ELSE result
@@ -150,8 +158,7 @@ objc:
2002-01-28 Jason Merrill <jason@redhat.com>
- * dwarf2.h (enum dwarf_call_frame_info): Add other DWARF 3 codes.
- Sync with src version.
+ * dwarf2.h: Sync with src version.
2002-01-28 Paul Koning <pkoning@equallogic.com>
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 18fcfb0..526766b 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -473,8 +473,18 @@ dwarf_cfi_name (cfi_opc)
return "DW_CFA_def_cfa_register";
case DW_CFA_def_cfa_offset:
return "DW_CFA_def_cfa_offset";
+
+ /* DWARF 3 */
case DW_CFA_def_cfa_expression:
return "DW_CFA_def_cfa_expression";
+ case DW_CFA_expression:
+ return "DW_CFA_expression";
+ case DW_CFA_offset_extended_sf:
+ return "DW_CFA_offset_extended_sf";
+ case DW_CFA_def_cfa_sf:
+ return "DW_CFA_def_cfa_sf";
+ case DW_CFA_def_cfa_offset_sf:
+ return "DW_CFA_def_cfa_offset_sf";
/* SGI/MIPS specific */
case DW_CFA_MIPS_advance_loc8:
@@ -768,10 +778,7 @@ reg_save (label, reg, sreg, offset)
#endif
offset /= DWARF_CIE_DATA_ALIGNMENT;
if (offset < 0)
- {
- cfi->dw_cfi_opc = DW_CFA_GNU_negative_offset_extended;
- offset = -offset;
- }
+ cfi->dw_cfi_opc = DW_CFA_offset_extended_sf;
cfi->dw_cfi_oprnd2.dw_cfi_offset = offset;
}
@@ -1714,13 +1721,19 @@ output_cfi (cfi, fde, for_eh)
break;
case DW_CFA_offset_extended:
- case DW_CFA_GNU_negative_offset_extended:
case DW_CFA_def_cfa:
dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
NULL);
dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd2.dw_cfi_offset, NULL);
break;
+ case DW_CFA_offset_extended_sf:
+ case DW_CFA_def_cfa_sf:
+ dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
+ NULL);
+ dw2_asm_output_data_sleb128 (cfi->dw_cfi_oprnd2.dw_cfi_offset, NULL);
+ break;
+
case DW_CFA_restore_extended:
case DW_CFA_undefined:
case DW_CFA_same_value:
@@ -1741,13 +1754,22 @@ output_cfi (cfi, fde, for_eh)
dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_offset, NULL);
break;
+ case DW_CFA_def_cfa_offset_sf:
+ dw2_asm_output_data_sleb128 (cfi->dw_cfi_oprnd1.dw_cfi_offset, NULL);
+ break;
+
case DW_CFA_GNU_window_save:
break;
case DW_CFA_def_cfa_expression:
+ case DW_CFA_expression:
output_cfa_loc (cfi);
break;
+ case DW_CFA_GNU_negative_offset_extended:
+ /* Obsoleted by DW_CFA_offset_extended_sf. */
+ abort ();
+
default:
break;
}
@@ -12049,6 +12071,9 @@ dwarf2out_finish (input_filename)
(SAVE_EXPR_CONTEXT
(node->created_for)))))
add_child_die (origin, die);
+ else if (errorcount > 0 || sorrycount > 0)
+ /* It's OK to be confused by errors in the input. */
+ add_child_die (comp_unit_die, die);
else if (node->created_for
&& ((DECL_P (node->created_for)
&& (context = DECL_CONTEXT (node->created_for)))
@@ -12066,9 +12091,6 @@ dwarf2out_finish (input_filename)
abort ();
add_child_die (origin, die);
}
- else if (errorcount > 0 || sorrycount > 0)
- /* It's OK to be confused by errors in the input. */
- add_child_die (comp_unit_die, die);
else
abort ();
}