bpf: Fix cross build for CONFIG_DEBUG_INFO_BTF option
authorJiri Olsa <jolsa@kernel.org>
Tue, 14 Jul 2020 10:25:34 +0000 (12:25 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 14 Jul 2020 17:20:31 +0000 (10:20 -0700)
Stephen and 0-DAY CI Kernel Test Service reported broken cross build
for arm (arm-linux-gnueabi-gcc (GCC) 9.3.0), with following output:

   /tmp/ccMS5uth.s: Assembler messages:
   /tmp/ccMS5uth.s:69: Error: unrecognized symbol type ""
   /tmp/ccMS5uth.s:82: Error: unrecognized symbol type ""

Having '@object' for .type  diretive is  wrong because '@' is comment
character for some architectures. Using STT_OBJECT instead that should
work everywhere.

Also using HOST* variables to build resolve_btfids so it's properly
build in crossbuilds (stolen from objtool's Makefile).

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/bpf/20200714102534.299280-2-jolsa@kernel.org
include/linux/btf_ids.h
tools/bpf/resolve_btfids/Makefile

index b3c73db..1cdb569 100644 (file)
@@ -23,7 +23,7 @@
 asm(                                                   \
 ".pushsection " BTF_IDS_SECTION ",\"a\";       \n"     \
 ".local " #symbol " ;                          \n"     \
-".type  " #symbol ", @object;                  \n"     \
+".type  " #symbol ", STT_OBJECT;               \n"     \
 ".size  " #symbol ", 4;                        \n"     \
 #symbol ":                                     \n"     \
 ".zero 4                                       \n"     \
index 948378c..a88cd44 100644 (file)
@@ -16,6 +16,20 @@ else
   MAKEFLAGS=--no-print-directory
 endif
 
+# always use the host compiler
+ifneq ($(LLVM),)
+HOSTAR  ?= llvm-ar
+HOSTCC  ?= clang
+HOSTLD  ?= ld.lld
+else
+HOSTAR  ?= ar
+HOSTCC  ?= gcc
+HOSTLD  ?= ld
+endif
+AR       = $(HOSTAR)
+CC       = $(HOSTCC)
+LD       = $(HOSTLD)
+
 OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
 
 LIBBPF_SRC := $(srctree)/tools/lib/bpf/