dwarves: Set errno if load fails in cus__load_files()

This patch improves the error seen by the user by setting errno in
cus__load_files(). Otherwise, we get a "No such file or directory" error
which might be confusing.

Before the patch, using a bogus file:

  $ ./pahole -J ./vmlinux-5.3.18-24.102-default.debug
  pahole: ./vmlinux-5.3.18-24.102-default.debug: No such file or directory
  $ ls ./vmlinux-5.3.18-24.102-default.debug
  /home/kkourt/src/hubble-fgs/vmlinux-5.3.18-24.102-default.debug
  $

After the patch:

  $ ./pahole -J ./vmlinux-5.3.18-24.102-default.debug
  pahole: ./vmlinux-5.3.18-24.102-default.debug: Unknown error -22
  $

Which is not very helpful, but less confusing.

Committer notes:

We need to turn the returned negative error to positive when setting it
to 'errno', that way the error message will be:

  $ ./pahole -J ./vmlinux-5.3.18-24.102-default.debug
  pahole: ./vmlinux-5.3.18-24.102-default.debug: Invalid argument
  $

Because:

  $ grep -w 22 /usr/include/*/errno*
  /usr/include/asm-generic/errno-base.h:#define	EINVAL		22	/* Invalid argument */
  $

Signed-off-by: Kornilios Kourtis <kornilios@isovalent.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Cc: bpf@vger.kernel.org
Cc: dwarves@vger.kernel.org
Link: http://lore.kernel.org/lkml/20220316132354.3226908-1-kkourt@kkourt.io
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Kornilios Kourtis 2022-03-16 14:23:54 +01:00 committed by Arnaldo Carvalho de Melo
parent f952a6f69f
commit 31df013b70

View File

@ -2399,8 +2399,11 @@ int cus__load_files(struct cus *cus, struct conf_load *conf,
int i = 0;
while (filenames[i] != NULL) {
if (cus__load_file(cus, conf, filenames[i]))
int err = cus__load_file(cus, conf, filenames[i]);
if (err) {
errno = -err;
return -++i;
}
++i;
}