prints how GDB would undo the N-th previous instruction, and if N is
   positive, it prints how GDB will redo the N-th following instruction.
 
+maintenance info frame-unwinders
+  List the frame unwinders currently in effect, starting with the highest
+  priority.
+
 * MI changes
 
 ** mi now reports 'no-history' as a stop reason when hitting the end of the
 
 If DWARF frame unwinders are not supported for a particular target
 architecture, then enabling this flag does not cause them to be used.
 
+@kindex maint info frame-unwinders
+@item maint info frame-unwinders
+List the frame unwinders currently in effect, starting with the highest priority.
+
 @kindex maint set worker-threads
 @kindex maint show worker-threads
 @item maint set worker-threads
 
 #include "target.h"
 #include "gdbarch.h"
 #include "dwarf2/frame-tailcall.h"
+#include "cli/cli-cmds.h"
 
 struct frame_unwind_table_entry
 {
             register_type (gdbarch, regnum), addr);
   return reg_val;
 }
+
+/* Implement "maintenance info frame-unwinders" command.  */
+
+static void
+maintenance_info_frame_unwinders (const char *args, int from_tty)
+{
+  struct gdbarch *gdbarch = target_gdbarch ();
+  struct frame_unwind_table *table = get_frame_unwind_table (gdbarch);
+
+  for (struct frame_unwind_table_entry *entry = table->list; entry != NULL;
+       entry = entry->next)
+    {
+      const char *name = entry->unwinder->name;
+      const char *type = frame_type_str (entry->unwinder->type);
+
+      gdb_printf (gdb_stdout, "%-16s\t%-16s\n", name, type);
+    }
+}
+
+void _initialize_frame_unwind ();
+void
+_initialize_frame_unwind ()
+{
+  /* Add "maint info frame-unwinders".  */
+  add_cmd ("frame-unwinders",
+          class_maintenance,
+          maintenance_info_frame_unwinders,
+          _("List the frame unwinders currently in effect, "
+            "starting with the highest priority."),
+          &maintenanceinfolist);
+}
 
   SENTINEL_FRAME
 };
 
+/* Return a string representation of TYPE.  */
+
+extern const char *frame_type_str (frame_type type);
+
 /* A wrapper for "frame_info *".  frame_info objects are invalidated
    whenever reinit_frame_cache is called.  This class arranges to
    invalidate the pointer when appropriate.  This is done to help