All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: Tianyi Liu <i.pear@outlook.com>, andrii.nakryiko@gmail.com
Cc: andrii@kernel.org, bpf@vger.kernel.org, i.pear@outlook.com,
	trivial@kernel.org
Subject: Re: [PATCH] libbpf: Add friendly error prompt for missing .BTF section
Date: Thu, 29 Sep 2022 18:58:26 -0700	[thread overview]
Message-ID: <63364d429366a_233df2084f@john.notmuch> (raw)
In-Reply-To: <SY4P282MB10844F5E962746CC0C628DE39D549@SY4P282MB1084.AUSP282.PROD.OUTLOOK.COM>

Tianyi Liu wrote:
> > -----Original Messages-----
> > From: Andrii Nakryiko <andrii.nakryiko@gmail.com>
> > Date: Tuesday, September 27, 2022 at 12:37
> > To: Tianyi Liu <i.pear@outlook.com>
> > Cc: andrii@kernel.org <andrii@kernel.org>, bpf@vger.kernel.org <bpf@vger.kernel.org>, trivial@kernel.org <trivial@kernel.org>
> > Subject: Re: [PATCH] libbpf: Add friendly error prompt for missing .BTF section
> > On Sun, Sep 25, 2022 at 10:54 PM Tianyi Liu <i.pear@outlook.com> wrote:
> > >
> > > Fresh users usually forget to turn on BTF generating flags compiling
> > > kernels, and will receive a confusing error "No such file or directory"
> > > (from return value ENOENT) with command "bpftool btf dump file vmlinux".
> > >
> > > Hope this can help them find the mistake.
> > >
> > > Signed-off-by: Tianyi Liu <i.pear@outlook.com>
> > > ---
> > >  tools/lib/bpf/btf.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > >
> > > diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
> > > index 2d14f1a52..9fbae1f3d 100644
> > > --- a/tools/lib/bpf/btf.c
> > > +++ b/tools/lib/bpf/btf.c
> > > @@ -990,6 +990,8 @@ static struct btf *btf_parse_elf(const char *path, struct btf *base_btf,
> > >         err = 0;
> > >
> > >         if (!btf_data) {
> > > +               pr_warn("Failed to get section %s from ELF %s, check CONFIG_DEBUG_INFO_BTF if compiling kernel\n",
> > > +                       BTF_ELF_SEC, path);
> > 
> > This is going to be very confusing for any user trying to load BTF
> > from some other ELF file. If we want to add such helpful suggestion
> > (and even then it's a bit of a hit and miss, as not every passed in
> > file is supposed to be vmlinux kernel image), it should be done in
> > bpftool proper.
> > 
> > >                 err = -ENOENT;
> > >                 goto done;
> > >         }
> > > --
> > > 2.37.3
> > >
> 
> Hi Andrii :
> I agree with you, I will try to implement it in bpftool.
> 
> But there’s another problem here, in btf_parse_elf() from tools/lib/bpf/btf.c:
> If the path does not exist, open() assigns ENOENT to errno, and btf_parse_elf()
> returns -ENOENT. Besides, if .BTF section can not be found in the ELF file,
> btf_parse_elf() also returns -ENOENT, the same as above. So we can't determine
> which kind of error it is from the outside.

Just do a stat() on the file to see if it exists on error and then
give more verbose warning? We did something similar in our loader
code for tooling fwiw. 

> 
> Could we change the err code in the second case to make it clearer, Such as
> changing ENOENT to EPROTO / adding a new error code? Or we can just warn
> that .BTF section does not exist.

I don't think its needed.

> 
> Thanks.
> 



  reply	other threads:[~2022-09-30  1:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-26  5:53 [PATCH] libbpf: Add friendly error prompt for missing .BTF section Tianyi Liu
2022-09-27  4:36 ` Andrii Nakryiko
2022-09-28 11:23   ` Tianyi Liu
2022-09-30  1:58     ` John Fastabend [this message]
2022-09-30 22:06       ` Andrii Nakryiko

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=63364d429366a_233df2084f@john.notmuch \
    --to=john.fastabend@gmail.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=i.pear@outlook.com \
    --cc=trivial@kernel.org \
    /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.