- 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.",
- &setlist);
- show = add_show_from_set (set, &showlist);
- set -> function.cfunc = set_demangling_command;
- show -> function.cfunc = show_demangling_command;
-
- /* Set the default demangling style chosen at compilation time. */
- set_demangling_style (DEMANGLING_STYLE);
+ int i, ndems;
+
+ /* Fill the demangling_style_names[] array. */
+ 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);
+
+ 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);
+
+ /* FIXME: cagney/2005-02-20: The code implementing this variable are
+ malloc-ing and free-ing current_demangling_style_string when it
+ should instead just point to an element of
+ demangling_style_names. */
+ add_setshow_enum_cmd ("demangle-style", class_support,
+ demangling_style_names,
+ (const char **) ¤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);
+
+ /* Set the default demangling style chosen at compilation time. */
+ set_demangling_style (DEFAULT_DEMANGLING_STYLE);