For this patch, LGTM, ack.

Thanks,
Tao Liu

On Wed, Aug 27, 2025 at 4:08 PM Lianbo Jiang <[email protected]> wrote:
>
> For example:
>   crash> rustfilt _RNvXsh_NtCskljHLvcz3xy_4core3fmteNtB5_7Display3fmt
>   <str as core::fmt::Display>::fmt
>
> Signed-off-by: Lianbo Jiang <[email protected]>
> ---
>  defs.h        |  2 ++
>  global_data.c |  1 +
>  help.c        | 10 ++++++++++
>  symbols.c     | 33 +++++++++++++++++++++++++++++++++
>  4 files changed, 46 insertions(+)
>
> diff --git a/defs.h b/defs.h
> index 4fecb8388229..156ac0232906 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -5508,6 +5508,7 @@ void cmd_s390dbf(void);
>  #endif
>  void cmd_map(void);          /* kvmdump.c */
>  void cmd_ipcs(void);         /* ipcs.c */
> +void cmd_rustfilt(void);     /* symbols.c */
>
>  /*
>   *  main.c
> @@ -6115,6 +6116,7 @@ extern char *help_wr[];
>  extern char *help_s390dbf[];
>  #endif
>  extern char *help_map[];
> +extern char *help_rustfilt[];
>
>  /*
>   *  task.c
> diff --git a/global_data.c b/global_data.c
> index f9bb7d079f51..889103d35f82 100644
> --- a/global_data.c
> +++ b/global_data.c
> @@ -125,6 +125,7 @@ struct command_table_entry linux_command_table[] = {
>  #if defined(S390) || defined(S390X)
>          {"s390dbf", cmd_s390dbf, help_s390dbf, 0},
>  #endif
> +       {"rustfilt",     cmd_rustfilt,     help_rustfilt,     MINIMAL},
>         {(char *)NULL}
>  };
>
> diff --git a/help.c b/help.c
> index 5d61e0d57229..4f071e0bd0a0 100644
> --- a/help.c
> +++ b/help.c
> @@ -8186,6 +8186,16 @@ char *help_net[] = {
>  NULL
>  };
>
> +char *help_rustfilt[] = {
> +"rustfilt",
> +"demangle a mangled Rust symbol to human readable symbol",
> +"<symbol>",
> +"  This command converts a mangled Rust symbol to human readable symbol.",
> +"\nEXAMPLES",
> +"  crash> rustfilt _RNvNtCshc5sK6KjdJJ_6kernel5print11call_printk",
> +"  kernel::print::call_printk",
> +NULL
> +};
>
>  char *help_waitq[] = {
>  "waitq",
> diff --git a/symbols.c b/symbols.c
> index 794519ad4126..052196265be0 100644
> --- a/symbols.c
> +++ b/symbols.c
> @@ -22,6 +22,7 @@
>  #include "config.h"
>  #endif
>  #include "bfd.h"
> +#include "demangle.h"
>
>  static void store_symbols(bfd *, int, void *, long, unsigned int);
>  static void store_sysmap_symbols(void);
> @@ -4887,6 +4888,38 @@ do_multiples:
>                 cmd_usage(pc->curcmd, SYNOPSIS);
>  }
>
> +/*
> + * Demangle a mangled Rust symbol to human readable symbol
> + */
> +void cmd_rustfilt(void)
> +{
> +       int c;
> +
> +       while ((c = getopt(argcnt, args, "")) != EOF) {
> +               switch(c)
> +               {
> +               default:
> +                       argerrs++;
> +                       break;
> +               }
> +       }
> +
> +       if (argerrs)
> +               cmd_usage(pc->curcmd, SYNOPSIS);
> +
> +       if (args[optind]) {
> +               char *buf;
> +
> +               buf = rust_demangle(args[optind], DMGL_RUST);
> +               if (buf) {
> +                       fprintf(fp, "%s", buf);
> +                       free(buf);
> +               } else
> +                       fprintf(fp, "Not a rust symbol: \n%s", args[optind]);
> +       } else
> +               cmd_usage(pc->curcmd, SYNOPSIS);
> +}
> +
>  /*
>   *  Common symbol display for cmd_sym().
>   */
> --
> 2.50.1
> --
> Crash-utility mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines: https://github.com/crash-utility/crash/wiki
--
Crash-utility mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to