Subject: Re: [PATCH bpf-next] selftests/bpf: suppress readelf stderr when probing for BTF support

From: Stanislav Fomichev <[email-masked]>
Date: Wed, 23 Jan 2019 19:15:07 -0800

On 01/23, Alexei Starovoitov wrote:
> On Wed, Jan 23, 2019 at 09:24:35AM -0800, Stanislav Fomichev wrote:
> > Before:
> > $ make -s -C tools/testing/selftests/bpf
> > readelf: Error: Missing knowledge of 32-bit reloc types used in DWARF
> > sections of machine number 247
> > readelf: Warning: unable to apply unsupported reloc type 10 to section
> > .debug_info
> > readelf: Warning: unable to apply unsupported reloc type 1 to section
> > .debug_info
> > readelf: Warning: unable to apply unsupported reloc type 10 to section
> > .debug_info
> > 
> > After:
> > $ make -s -C tools/testing/selftests/bpf
> > 
> > Signed-off-by: Stanislav Fomichev <[email-masked]>
> > ---
> >  tools/testing/selftests/bpf/Makefile | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> > index 70229de510f5..ff3cab5525c1 100644
> > --- a/tools/testing/selftests/bpf/Makefile
> > +++ b/tools/testing/selftests/bpf/Makefile
> > @@ -131,7 +131,7 @@ BTF_PAHOLE_PROBE := $(shell $(BTF_PAHOLE) --help 2>&1 | grep BTF)
> >  BTF_OBJCOPY_PROBE := $(shell $(LLVM_OBJCOPY) --help 2>&1 | grep -i 'usage.*llvm')
> >  BTF_LLVM_PROBE := $(shell echo "int main() { return 0; }" | \
> >  			  $(CLANG) -target bpf -O2 -g -c -x c - -o ./llvm_btf_verify.o; \
> > -			  readelf -S ./llvm_btf_verify.o | grep BTF; \
> > +			  readelf -S ./llvm_btf_verify.o 2>/dev/null | grep BTF; \
> >  			  /bin/rm -f ./llvm_btf_verify.o)
> 
> Silencing the warning may hide real issue later.
> I'd rather fix whatever is necessary in readelf.
> Does it use bfd? if so bpf support for bfd was practically complete.
Are you concerned about the situation where llvm has btf support, but
readelf (binutils) is unaware of it? In this case, we should probably
use llvm's readelf (llvm-readelf binary). We already have a precedent of
using llvm's tools with LLVM_OBJCOPY. Let me try it out tomorrow.