aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2010-03-15 15:08:02 +0000
committerThomas Schwinge <tschwinge@gnu.org>2010-03-15 15:08:02 +0000
commit4e4e1355e778223babb38993b577da68de476045 (patch)
treefe67a58c098494bb3bd7439da2b515a26b17fc75 /gas
parentb672b0573713e336541cc793af65bf9ea13e9702 (diff)
downloadgdb-4e4e1355e778223babb38993b577da68de476045.zip
gdb-4e4e1355e778223babb38993b577da68de476045.tar.gz
gdb-4e4e1355e778223babb38993b577da68de476045.tar.bz2
2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
* dw2gencfi.c (output_cie): Make it more explicit which code paths belong to .eh_frame only.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/dw2gencfi.c36
2 files changed, 24 insertions, 17 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 32b0da6..9a08df9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
+
+ * dw2gencfi.c (output_cie): Make it more explicit which code paths
+ belong to .eh_frame only.
+
2010-03-13 Segher Boessenkool <segher@kernel.crashing.org>
* config/tc-v850.c (v850_insert_operand): Handle out-of-range
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index 93e011f..09171da 100644
--- a/gas/dw2gencfi.c
+++ b/gas/dw2gencfi.c
@@ -1,5 +1,5 @@
/* dw2gencfi.c - Support for generating Dwarf2 CFI information.
- Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Contributed by Michal Ludvig <mludvig@suse.cz>
@@ -1319,29 +1319,31 @@ output_cie (struct cie_entry *cie, bfd_boolean eh_frame, int align)
if (cie->per_encoding != DW_EH_PE_omit)
augmentation_size += 1 + encoding_size (cie->per_encoding);
out_uleb128 (augmentation_size); /* Augmentation size. */
- }
- if (cie->per_encoding != DW_EH_PE_omit)
- {
- offsetT size = encoding_size (cie->per_encoding);
- out_one (cie->per_encoding);
- exp = cie->personality;
- if ((cie->per_encoding & 0x70) == DW_EH_PE_pcrel)
+
+ if (cie->per_encoding != DW_EH_PE_omit)
{
+ offsetT size = encoding_size (cie->per_encoding);
+ out_one (cie->per_encoding);
+ exp = cie->personality;
+ if ((cie->per_encoding & 0x70) == DW_EH_PE_pcrel)
+ {
#if CFI_DIFF_EXPR_OK
- exp.X_op = O_subtract;
- exp.X_op_symbol = symbol_temp_new_now ();
- emit_expr (&exp, size);
+ exp.X_op = O_subtract;
+ exp.X_op_symbol = symbol_temp_new_now ();
+ emit_expr (&exp, size);
#elif defined (tc_cfi_emit_pcrel_expr)
- tc_cfi_emit_pcrel_expr (&exp, size);
+ tc_cfi_emit_pcrel_expr (&exp, size);
#else
- abort ();
+ abort ();
#endif
+ }
+ else
+ emit_expr (&exp, size);
}
- else
- emit_expr (&exp, size);
+
+ if (cie->lsda_encoding != DW_EH_PE_omit)
+ out_one (cie->lsda_encoding);
}
- if (cie->lsda_encoding != DW_EH_PE_omit)
- out_one (cie->lsda_encoding);
switch (DWARF2_FDE_RELOC_SIZE)
{