* dw2gencfi.c (select_cie_for_fde): When separating CIE out
authorAlan Modra <amodra@gmail.com>
Thu, 9 Sep 2004 13:32:46 +0000 (13:32 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 9 Sep 2004 13:32:46 +0000 (13:32 +0000)
from FDE, treat a CFI_escape as we do a DW_CFA_advance_loc.

gas/ChangeLog
gas/dw2gencfi.c

index dcfe99b9498cb809a669ae208e13c3e3b8f2b861..3ee610f20656e3d4c22898e76a8c9b37229ada72 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-09  Alan Modra  <amodra@bigpond.net.au>
+
+       * dw2gencfi.c (select_cie_for_fde): When separating CIE out
+       from FDE, treat a CFI_escape as we do a DW_CFA_advance_loc.
+
 2004-09-08  Paul Brook  <paul@codesourcery.com>
 
        * config/obj-elf.c (obj_elf_section_type): Handle init_array,
index 05d7e3d60f7cbae42a3ff2fe3e756f50084b3a9f..3937329e402f35c0870417a9915cdd6b5d918282 100644 (file)
@@ -975,8 +975,12 @@ select_cie_for_fde (struct fde_entry *fde, struct cfi_insn_data **pfirst)
        }
 
       /* Success if we reached the end of the CIE list, and we've either
-        run out of FDE entries or we've encountered an advance.  */
-      if (i == cie->last && (!j || j->insn == DW_CFA_advance_loc))
+        run out of FDE entries or we've encountered an advance or
+        escape.  */
+      if (i == cie->last
+         && (!j
+             || j->insn == DW_CFA_advance_loc
+             || j->insn == CFI_escape))
        {
          *pfirst = j;
          return cie;
@@ -992,7 +996,8 @@ select_cie_for_fde (struct fde_entry *fde, struct cfi_insn_data **pfirst)
   cie->first = fde->data;
 
   for (i = cie->first; i ; i = i->next)
-    if (i->insn == DW_CFA_advance_loc)
+    if (i->insn == DW_CFA_advance_loc
+       || i->insn == CFI_escape)
       break;
 
   cie->last = i;