opcodes/
[deliverable/binutils-gdb.git] / gas / dw2gencfi.h
index 75b6ec24610abf1bb32bddea2d5bbee4251a3336..7f834966b90e08c554f2dac87fa8db18d77a8f3a 100644 (file)
@@ -1,12 +1,12 @@
 /* dw2gencfi.h - Support for generating Dwarf2 CFI information.
 /* dw2gencfi.h - Support for generating Dwarf2 CFI information.
-   Copyright 2003 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
    Contributed by Michal Ludvig <mludvig@suse.cz>
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Contributed by Michal Ludvig <mludvig@suse.cz>
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #ifndef DW2GENCFI_H
 #define DW2GENCFI_H
 
 
 #ifndef DW2GENCFI_H
 #define DW2GENCFI_H
 
-#include "elf/dwarf2.h"
+#include "dwarf2.h"
 
 struct symbol;
 
 
 struct symbol;
 
@@ -49,4 +49,84 @@ extern void cfi_add_CFA_same_value (unsigned);
 extern void cfi_add_CFA_remember_state (void);
 extern void cfi_add_CFA_restore_state (void);
 
 extern void cfi_add_CFA_remember_state (void);
 extern void cfi_add_CFA_restore_state (void);
 
+/* Structures for md_cfi_end.  */
+
+#if defined (TE_PE) || defined (TE_PEP)
+#define SUPPORT_FRAME_LINKONCE 1
+#else
+#define SUPPORT_FRAME_LINKONCE 0
+#endif
+
+struct cfi_insn_data
+{
+  struct cfi_insn_data *next;
+#if SUPPORT_FRAME_LINKONCE
+  segT cur_seg;
+#endif
+  int insn;
+  union
+  {
+    struct
+    {
+      unsigned reg;
+      offsetT offset;
+    } ri;
+
+    struct
+    {
+      unsigned reg1;
+      unsigned reg2;
+    } rr;
+
+    unsigned r;
+    offsetT i;
+
+    struct
+    {
+      symbolS *lab1;
+      symbolS *lab2;
+    } ll;
+
+    struct cfi_escape_data *esc;
+
+    struct
+    {
+      unsigned reg, encoding;
+      expressionS exp;
+    } ea;
+  } u;
+};
+
+struct fde_entry
+{
+  struct fde_entry *next;
+#if SUPPORT_FRAME_LINKONCE
+  segT cur_seg;
+#endif
+  symbolS *start_address;
+  symbolS *end_address;
+  struct cfi_insn_data *data;
+  struct cfi_insn_data **last;
+  unsigned char per_encoding;
+  unsigned char lsda_encoding;
+  expressionS personality;
+  expressionS lsda;
+  unsigned int return_column;
+  unsigned int signal_frame;
+#if SUPPORT_FRAME_LINKONCE
+  int handled;
+#endif
+};
+
+/* The list of all FDEs that have been collected.  */
+extern struct fde_entry *all_fde_data;
+
+/* Fake CFI type; outside the byte range of any real CFI insn.  */
+#define CFI_adjust_cfa_offset  0x100
+#define CFI_return_column      0x101
+#define CFI_rel_offset         0x102
+#define CFI_escape             0x103
+#define CFI_signal_frame       0x104
+#define CFI_val_encoded_addr   0x105
+
 #endif /* DW2GENCFI_H */
 #endif /* DW2GENCFI_H */
This page took 0.025138 seconds and 4 git commands to generate.