This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gas: fix a few omissions in .cfi_label handling


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=73e7610887dfd4313b66f33436bc18570d58b2ac

commit 73e7610887dfd4313b66f33436bc18570d58b2ac
Author: Jan Beulich <jbeulich@novell.com>
Date:   Fri Feb 6 09:11:09 2015 +0100

    gas: fix a few omissions in .cfi_label handling
    
    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.

Diff:
---
 gas/ChangeLog   | 7 +++++++
 gas/dw2gencfi.c | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index f354c22..bff5d8e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index 6a80d0b..ef97e18 100644
--- a/gas/dw2gencfi.c
+++ b/gas/dw2gencfi.c
@@ -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 }
   };


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]