All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: 程书意 <chengshuyi@linux.alibaba.com>
Cc: dwarves@vger.kernel.org, wenan.mao@linux.alibaba.com,
	Jiri Olsa <jolsa@kernel.org>,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>
Subject: Re: [PATCH] btf: Add --btf_prefix flag
Date: Mon, 17 May 2021 11:42:51 -0300	[thread overview]
Message-ID: <YKKA64WWqYN3P7YJ@kernel.org> (raw)
In-Reply-To: <a249699a-7c6c-4d4a-71b0-87981c8d229e@linux.alibaba.com>

Em Mon, May 17, 2021 at 08:06:30PM +0800, 程书意 escreveu:
> To solve problems similar to _RH_KABI_REPLACE, _RH_KABI_REPLACE makes many

Can you explain what is _RH_KABI_REPLACE, why it is needed so that
people unfamiliar with it can make sense of your patch?

Also why "btf_prefix" when this is related to this other feature? Can
you find a better name?

You also forgot to update the man page at man-pages/pahole.1.

- Arnaldo

> structures have different names, resulting in a
> particularly large vmlinux btf. For example, running ./pahole -J
> vmlinux-3.10.0-1160.el7.x86_64 without --btf_prefix flag,
> the running time is:
>                 real 8m28.912s
>                 user 8m27.271s
>                 sys 0m1.471s
> And the size of the generated btf segment is 30678240 bytes.
> 
> After adding the patch, running ./pahole
> --btf_prefix=__UNIQUE_ID_rh_kabi_hide -J vmlinux-3.10.0-1160.el7.x86_64. The
> running
> time of the command is:
>                 real 0m19.634s
>                 user 0m18.457s
>                 sys 0m1.169s
> The size of the generated btf segment is 3117719 bytes.
> 
> Thanks.
> 
> Signed-off-by: chengshuyi <chengshuyi@linux.alibaba.com>
> ---
>  pahole.c         | 10 ++++++++++
>  pahole_strings.h |  2 ++
>  strings.c        |  9 +++++++--
>  3 files changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/pahole.c b/pahole.c
> index dc40ccf..0b4f4ca 100644
> --- a/pahole.c
> +++ b/pahole.c
> @@ -24,6 +24,7 @@
>  #include "btf_encoder.h"
>  #include "libbtf.h"
>  #include "lib/bpf/src/libbpf.h"
> +#include "pahole_strings.h"
> 
>  static bool btf_encode;
>  static bool ctf_encode;
> @@ -855,6 +856,7 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
>  #define ARGP_btf_gen_floats       322
>  #define ARGP_btf_gen_all       323
>  #define ARGP_with_flexible_array   324
> +#define ARGP_btf_prefix   325
> 
>  static const struct argp_option pahole__options[] = {
>      {
> @@ -1140,6 +1142,12 @@ static const struct argp_option pahole__options[] = {
>          .doc  = "Path to the base BTF file",
>      },
>      {
> +        .name = "btf_prefix",
> +        .key = ARGP_btf_prefix,
> +        .arg = "STRING",
> +        .doc = "Strings with the same prefix are considered the same.",
> +    },
> +    {
>          .name = "btf_encode",
>          .key  = 'J',
>          .doc  = "Encode as BTF",
> @@ -1297,6 +1305,8 @@ static error_t pahole__options_parser(int key, char
> *arg,
>          btf_encode_force = true;        break;
>      case ARGP_btf_base:
>          base_btf_file = arg;            break;
> +    case ARGP_btf_prefix:
> +        btf_prefix = arg;        break;
>      case ARGP_numeric_version:
>          print_numeric_version = true;        break;
>      case ARGP_btf_gen_floats:
> diff --git a/pahole_strings.h b/pahole_strings.h
> index 522fbf2..bf3dc7c 100644
> --- a/pahole_strings.h
> +++ b/pahole_strings.h
> @@ -14,6 +14,8 @@ struct strings {
>      struct btf *btf;
>  };
> 
> +extern const char *btf_prefix;
> +
>  struct strings *strings__new(void);
> 
>  void strings__delete(struct strings *strings);
> diff --git a/strings.c b/strings.c
> index d37f49d..911ce25 100644
> --- a/strings.c
> +++ b/strings.c
> @@ -16,6 +16,9 @@
> 
>  #include "dutil.h"
>  #include "lib/bpf/src/libbpf.h"
> +#include "libbtf.h"

Why do you need to add this new include? I guess you meant including
pahole_strings.h to get the forward declaration for 'btf_prefix'?

> +
> +const char *btf_prefix;
> 
>  struct strings *strings__new(void)
>  {
> @@ -47,8 +50,10 @@ strings_t strings__add(struct strings *strs, const char
> *str)
> 
>      if (str == NULL)
>          return 0;
> -
> -    index = btf__add_str(strs->btf, str);
> +    if(btf_prefix && strncmp(str,btf_prefix,strlen(btf_prefix))==0)

Please also follow the existing coding style, i.e. use a space after
'if' and also after the commas.

- Arnaldo

> +        index = btf__add_str(strs->btf, btf_prefix);
> +    else
> +        index = btf__add_str(strs->btf, str);
>      if (index < 0)
>          return 0;
> 
> -- 
> 1.8.3.1
> 
> 

-- 

- Arnaldo

  reply	other threads:[~2021-05-17 15:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17 12:06 [PATCH] btf: Add --btf_prefix flag 程书意
2021-05-17 14:42 ` Arnaldo Carvalho de Melo [this message]
2021-05-18  9:02   ` chengshuyi
2021-05-18 12:49     ` Arnaldo Carvalho de Melo
2021-05-18 18:30       ` Andrii Nakryiko
2021-05-19  2:44         ` [PATCH v2] pahole: Add --kabi_prefix flag Shuyi Cheng
2021-05-19 20:07           ` Jiri Olsa
     [not found]             ` <5D76A4F3-6F5A-4061-A274-34FFE5CBA338@gmail.com>
2021-05-19 21:18               ` Jiri Olsa
2021-05-19 21:36                 ` Arnaldo
2021-05-20 10:27             ` Shuyi Cheng
2021-05-20 11:49               ` Jiri Olsa
2021-05-20 12:08                 ` Shuyi Cheng
2021-05-20 12:18                   ` Jiri Olsa
2021-05-20 12:30                     ` Shuyi Cheng
2021-05-20 15:25           ` Jiri Olsa
2021-05-21  1:44             ` [PATCH v3] " Shuyi Cheng
2021-05-27 16:43               ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YKKA64WWqYN3P7YJ@kernel.org \
    --to=acme@kernel.org \
    --cc=andrii.nakryiko@gmail.com \
    --cc=chengshuyi@linux.alibaba.com \
    --cc=dwarves@vger.kernel.org \
    --cc=jolsa@kernel.org \
    --cc=wenan.mao@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.