2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
[external/binutils.git] / gas / dw2gencfi.c
index 93e011f..09171da 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)
     {