+/* An enumeration describing the Compact EH header format. The least
+ significant bit is used to distinguish the entries.
+
+ Inline Compact: Function offset [0]
+ Four chars of unwind data.
+ Out-of-line Compact: Function offset [1]
+ Compact unwind data offset [0]
+ Legacy: Function offset [1]
+ Unwind data offset [1]
+
+ The header type is initialized to EH_COMPACT_UNKNOWN until the
+ format is discovered by encountering a .fde_data entry.
+ Failure to find a .fde_data entry will cause an EH_COMPACT_LEGACY
+ header to be generated. */
+
+enum {
+ EH_COMPACT_UNKNOWN,
+ EH_COMPACT_LEGACY,
+ EH_COMPACT_INLINE,
+ EH_COMPACT_OUTLINE,
+ EH_COMPACT_OUTLINE_DONE,
+ /* Outline if .cfi_inline_lsda used, otherwise legacy FDE. */
+ EH_COMPACT_HAS_LSDA
+};
+
+/* Stack of old CFI data, for save/restore. */
+struct cfa_save_data
+{
+ struct cfa_save_data *next;
+ offsetT cfa_offset;
+};
+
+/* Current open FDE entry. */
+struct frch_cfi_data
+{
+ struct fde_entry *cur_fde_data;
+ symbolS *last_address;
+ offsetT cur_cfa_offset;
+ struct cfa_save_data *cfa_save_stack;
+};
+