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>
1 file changed