Re: [PATCH] libperf: Fix arch include paths

From: Guenter Roeck
Date: Tue Aug 20 2019 - 11:26:49 EST


On 8/20/19 5:46 AM, Jiri Olsa wrote:
On Mon, Aug 19, 2019 at 10:21:37AM +0200, Jiri Olsa wrote:

SNIP

next-20190816, though the problem has been seen since at least
next-20190801. Mainline builds fine.

Here is the script I used to bisect the problem:

make mrproper
rm -rf /tmp/linux
mkdir /tmp/linux
make ARCH=x86_64 O=/tmp/linux defconfig
make -j40 ARCH=x86_64 O=/tmp/linux tools/perf

It looks like the problem is related to "ARCH=x86_64". In mainline,
x86_64 is replaced in the build command with x86. This is no longer
the case, and make now tries to include from tools/arch/x86_64/include/,
which doesn't exist. As it turns out, O=<destdir> is not needed to
reproduce the problem, only ARCH=x86_64 (or ARCH=i386).

aaargh.. you're right ;-) it's the SRCARCH, which should
be used in libperf instead of ARCH

change below fixes that for me

attaching the full patch

jirka


---
Guenter Roeck reported problem with compilation
when the ARCH is specified:

$ make ARCH=x86_64
In file included from tools/include/asm/atomic.h:6:0,
from include/linux/atomic.h:5,
from tools/include/linux/refcount.h:41,
from cpumap.c:4: tools/include/asm/../../arch/x86/include/asm/atomic.h:11:10:
fatal error: asm/cmpxchg.h: No such file or directory

The problem is that we don't use SRCARCH (the sanitized ARCH
version) and we don't get the proper include path.

Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx>
Link: http://lkml.kernel.org/n/tip-408wq8mtajlvs9iir7qo9c84@xxxxxxxxxxxxxx
Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>

Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>

---
tools/perf/lib/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/lib/Makefile b/tools/perf/lib/Makefile
index 8a9ae50818e4..a67efb8d9d39 100644
--- a/tools/perf/lib/Makefile
+++ b/tools/perf/lib/Makefile
@@ -59,7 +59,7 @@ else
CFLAGS := -g -Wall
endif
-INCLUDES = -I$(srctree)/tools/perf/lib/include -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/ -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi
+INCLUDES = -I$(srctree)/tools/perf/lib/include -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(SRCARCH)/include/ -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi -I$(srctree)/tools/include/uapi
# Append required CFLAGS
override CFLAGS += $(EXTRA_WARNINGS)