Em Mon, Aug 06, 2018 at 05:28:00PM -0500, Kim Phillips escreveu: > The new syscall table support for arm64 mistakenly used the system's > asm-generic/unistd.h file when processing the > tools/arch/arm64/include/uapi/asm/unistd.h file's include directive: > > #include <asm-generic/unistd.h> > > See "Committer notes" section of commit 2b5882435606 "perf arm64: > Generate system call table from asm/unistd.h" for more details. > > This patch removes the committer's temporary workaround, and instructs > the host compiler to search the build tree's include path for the right > copy of the unistd.h file, instead of the one on the system's > /usr/include path. > > It thus fixes the committer's test that cross-builds an arm64 perf > on an x86 platform running Ubuntu 14.04.5 LTS with an old toolchain: > > $ tools/perf/arch/arm64/entry/syscalls/mksyscalltbl > /gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc > gcc `pwd`/tools tools/arch/arm64/include/uapi/asm/unistd.h | grep bpf > [280] = "bpf", > > Cc: Hendrik Brueckner <brueck...@linux.ibm.com> > Cc: Arnaldo Carvalho de Melo <a...@redhat.com> > Cc: Alexander Shishkin <alexander.shish...@linux.intel.com> > Cc: Jiri Olsa <jo...@redhat.com> > Cc: Michael Ellerman <m...@ellerman.id.au> > Cc: Namhyung Kim <namhy...@kernel.org> > Cc: Peter Zijlstra <pet...@infradead.org> > Cc: Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> > Cc: Thomas Richter <tmri...@linux.vnet.ibm.com> > Fixes: 2b5882435606 ("perf arm64: Generate system call table from > asm/unistd.h") > Signed-off-by: Kim Phillips <kim.phill...@arm.com> > --- > Hi, sorry for late response - was on vacation. I was able to reproduce > and fix by adding this -I to the $hostcc line. Please test, and let me > know if this is an acceptable fix.
Looks better than what I did, that indeed was a stopgap solution till something better came along. There are newer toolchains in my container collection to cross build arm64/arm: 17 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 7.3.0-15) 7.3.0 46 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 47 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 I think its time to add ubuntu:18.04-x- variants, to get a more recent toolchain on ubuntu, will do. Anyway, I'll repeat the tests after applying your patch, - Arnaldo > tools/perf/arch/arm64/Makefile | 5 +++-- > tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 6 +++--- > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/tools/perf/arch/arm64/Makefile b/tools/perf/arch/arm64/Makefile > index f013b115dc86..dbef716a1913 100644 > --- a/tools/perf/arch/arm64/Makefile > +++ b/tools/perf/arch/arm64/Makefile > @@ -11,7 +11,8 @@ PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 > > out := $(OUTPUT)arch/arm64/include/generated/asm > header := $(out)/syscalls.c > -sysdef := $(srctree)/tools/include/uapi/asm-generic/unistd.h > +incpath := $(srctree)/tools > +sysdef := $(srctree)/tools/arch/arm64/include/uapi/asm/unistd.h > sysprf := $(srctree)/tools/perf/arch/arm64/entry/syscalls/ > systbl := $(sysprf)/mksyscalltbl > > @@ -19,7 +20,7 @@ systbl := $(sysprf)/mksyscalltbl > _dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') > > $(header): $(sysdef) $(systbl) > - $(Q)$(SHELL) '$(systbl)' '$(CC)' '$(HOSTCC)' $(sysdef) > $@ > + $(Q)$(SHELL) '$(systbl)' '$(CC)' '$(HOSTCC)' $(incpath) $(sysdef) > $@ > > clean:: > $(call QUIET_CLEAN, arm64) $(RM) $(header) > diff --git a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl > b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl > index 52e197317d3e..2dbb8cade048 100755 > --- a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl > +++ b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl > @@ -11,7 +11,8 @@ > > gcc=$1 > hostcc=$2 > -input=$3 > +incpath=$3 > +input=$4 > > if ! test -r $input; then > echo "Could not read input file" >&2 > @@ -28,7 +29,6 @@ create_table_from_c() > > cat <<-_EoHEADER > #include <stdio.h> > - #define __ARCH_WANT_RENAMEAT > #include "$input" > int main(int argc, char *argv[]) > { > @@ -42,7 +42,7 @@ create_table_from_c() > printf "%s\n" " printf(\"#define SYSCALLTBL_ARM64_MAX_ID %d\\n\", > __NR_$last_sc);" > printf "}\n" > > - } | $hostcc -o $create_table_exe -x c - > + } | $hostcc -I $incpath/include/uapi -o $create_table_exe -x c - > > $create_table_exe > > -- > 2.17.1