diff options
author | Thomas Schwinge <tschwinge@gnu.org> | 2010-03-15 15:08:02 +0000 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2010-03-15 15:08:02 +0000 |
commit | 4e4e1355e778223babb38993b577da68de476045 (patch) | |
tree | fe67a58c098494bb3bd7439da2b515a26b17fc75 /gas | |
parent | b672b0573713e336541cc793af65bf9ea13e9702 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | gas/dw2gencfi.c | 36 |
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) { |