+/* Handle the .cfi_inline_lsda directive. */
+static void
+dot_cfi_inline_lsda (int ignored ATTRIBUTE_UNUSED)
+{
+ segT ccseg;
+ int align;
+ long max_alignment = 28;
+
+ if (!last_fde)
+ {
+ as_bad (_("unexpected .cfi_inline_lsda"));
+ ignore_rest_of_line ();
+ return;
+ }
+
+ if ((last_fde->sections & CFI_EMIT_eh_frame_compact) == 0)
+ {
+ as_bad (_(".cfi_inline_lsda not valid for this frame"));
+ ignore_rest_of_line ();
+ return;
+ }
+
+ if (last_fde->eh_header_type != EH_COMPACT_UNKNOWN
+ && last_fde->eh_header_type != EH_COMPACT_HAS_LSDA)
+ {
+ as_bad (_(".cfi_inline_lsda seen for frame without .cfi_lsda"));
+ ignore_rest_of_line ();
+ return;
+ }
+
+#ifdef md_flush_pending_output
+ md_flush_pending_output ();
+#endif
+
+ align = get_absolute_expression ();
+ if (align > max_alignment)
+ {
+ align = max_alignment;
+ as_bad (_("Alignment too large: %d. assumed."), align);
+ }
+ else if (align < 0)
+ {
+ as_warn (_("Alignment negative: 0 assumed."));
+ align = 0;
+ }
+
+ demand_empty_rest_of_line ();
+ ccseg = CUR_SEG (last_fde);
+
+ /* Open .gnu_extab section. */
+ get_cfi_seg (ccseg, ".gnu_extab",
+ (SEC_ALLOC | SEC_LOAD | SEC_DATA
+ | DWARF2_EH_FRAME_READ_ONLY),
+ 1);
+
+ frag_align (align, 0, 0);
+ record_alignment (now_seg, align);
+ if (last_fde->eh_header_type == EH_COMPACT_HAS_LSDA)
+ output_compact_unwind_data (last_fde, align);
+
+ last_fde = NULL;