2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
authorThomas Schwinge <tschwinge@gnu.org>
Mon, 15 Mar 2010 15:08:02 +0000 (15:08 +0000)
committerThomas Schwinge <tschwinge@gnu.org>
Mon, 15 Mar 2010 15:08:02 +0000 (15:08 +0000)
* dw2gencfi.c (output_cie): Make it more explicit which code paths
belong to .eh_frame only.

gas/ChangeLog
gas/dw2gencfi.c

index 32b0da6500b6e9dab54aad5a2ff167e94ed57804..9a08df9ac03543e581fd09f431b509bc2dd09fb3 100644 (file)
@@ -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
index 93e011f457ea59a496046c39ec139c5cef77a92d..09171da2965fe21ffde979d657731058a6c84040 100644 (file)
@@ -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)
     {