gas: fix a few omissions in .cfi_label handling
authorJan Beulich <jbeulich@novell.com>
Fri, 6 Feb 2015 08:11:09 +0000 (09:11 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 6 Feb 2015 08:11:09 +0000 (09:11 +0100)
While actually starting to use that new directive, I noticed a few
oversights of the original commit.

gas/
2015-02-06  Jan Beulich  <jbeulich@suse.com>

* dw2gencfi.c (select_cie_for_fde): Also bail on CFI_label.
(cfi_change_reg_numbers): Also do nothing for CFI_label.
(cfi_pseudo_table): Also handle .cfi_label when not supporting
CFI directives.

gas/ChangeLog
gas/dw2gencfi.c

index f354c22..bff5d8e 100644 (file)
@@ -1,3 +1,10 @@
+2015-02-06  Jan Beulich  <jbeulich@suse.com>
+
+       * dw2gencfi.c (select_cie_for_fde): Also bail on CFI_label.
+       (cfi_change_reg_numbers): Also do nothing for CFI_label.
+       (cfi_pseudo_table): Also handle .cfi_label when not supporting
+       CFI directives.
+
 2015-02-05  Alan Modra  <amodra@gmail.com>
 
        * config/tc-msp430.c (md_assemble): Correct size passed to
index 6a80d0b..ef97e18 100644 (file)
@@ -1759,6 +1759,7 @@ select_cie_for_fde (struct fde_entry *fde, bfd_boolean eh_frame,
 
            case CFI_escape:
            case CFI_val_encoded_addr:
+           case CFI_label:
              /* Don't bother matching these for now.  */
              goto fail;
 
@@ -1775,7 +1776,8 @@ select_cie_for_fde (struct fde_entry *fde, bfd_boolean eh_frame,
              || j->insn == DW_CFA_advance_loc
              || j->insn == DW_CFA_remember_state
              || j->insn == CFI_escape
-             || j->insn == CFI_val_encoded_addr))
+             || j->insn == CFI_val_encoded_addr
+             || j->insn == CFI_label))
        {
          *pfirst = j;
          return cie;
@@ -1827,6 +1829,7 @@ cfi_change_reg_numbers (struct cfi_insn_data *insn, segT ccseg)
        case DW_CFA_restore_state:
        case DW_CFA_GNU_window_save:
        case CFI_escape:
+       case CFI_label:
          break;
 
        case DW_CFA_def_cfa:
@@ -2072,6 +2075,7 @@ const pseudo_typeS cfi_pseudo_table[] =
     { "cfi_personality", dot_cfi_dummy, 0 },
     { "cfi_lsda", dot_cfi_dummy, 0 },
     { "cfi_val_encoded_addr", dot_cfi_dummy, 0 },
+    { "cfi_label", dot_cfi_dummy, 0 },
     { NULL, NULL, 0 }
   };