- struct cmd_list_element *set, *show;
-
- set = add_set_cmd ("demangle-style", class_support, var_string_noescape,
- (char *) ¤t_demangling_style_string,
- "Set the current C++ demangling style.\n\
-Use `set demangle-style' without arguments for a list of demangling styles.",
- &setlist);
- show = add_show_from_set (set, &showlist);
- set->function.sfunc = set_demangling_command;
-
- /* Set the default demangling style chosen at compilation time. */
- set_demangling_style (DEFAULT_DEMANGLING_STYLE);
- set_cplus_marker_for_demangling (CPLUS_MARKER);
+ int i, ndems;
+
+ /* Fill the demangling_style_names[] array, and set the default
+ demangling style chosen at compilation time. */
+ for (ndems = 0;
+ libiberty_demanglers[ndems].demangling_style != unknown_demangling;
+ ndems++)
+ ;
+ demangling_style_names = xcalloc (ndems + 1, sizeof (char *));
+ for (i = 0;
+ libiberty_demanglers[i].demangling_style != unknown_demangling;
+ i++)
+ {
+ demangling_style_names[i]
+ = xstrdup (libiberty_demanglers[i].demangling_style_name);
+
+ if (current_demangling_style_string == NULL
+ && strcmp (DEFAULT_DEMANGLING_STYLE, demangling_style_names[i]) == 0)
+ current_demangling_style_string = demangling_style_names[i];
+ }
+
+ add_setshow_boolean_cmd ("demangle", class_support, &demangle, _("\
+Set demangling of encoded C++/ObjC names when displaying symbols."), _("\
+Show demangling of encoded C++/ObjC names when displaying symbols."), NULL,
+ NULL,
+ show_demangle,
+ &setprintlist, &showprintlist);
+
+ add_setshow_boolean_cmd ("asm-demangle", class_support, &asm_demangle, _("\
+Set demangling of C++/ObjC names in disassembly listings."), _("\
+Show demangling of C++/ObjC names in disassembly listings."), NULL,
+ NULL,
+ show_asm_demangle,
+ &setprintlist, &showprintlist);
+
+ add_setshow_enum_cmd ("demangle-style", class_support,
+ demangling_style_names,
+ ¤t_demangling_style_string, _("\
+Set the current C++ demangling style."), _("\
+Show the current C++ demangling style."), _("\
+Use `set demangle-style' without arguments for a list of demangling styles."),
+ set_demangling_command,
+ show_demangling_style_names,
+ &setlist, &showlist);