Re: [PATCH 1/3] tools include: Add uapi mman.h for each architecture

From: Wangnan (F)
Date: Wed Sep 14 2016 - 05:39:37 EST




On 2016/9/14 17:28, Naveen N. Rao wrote:
On 2016/09/12 06:15PM, Arnaldo Carvalho de Melo wrote:
Em Mon, Sep 12, 2016 at 04:07:42PM -0300, Arnaldo Carvalho de Melo escreveu:
Em Mon, Sep 12, 2016 at 12:54:29PM +0000, Wang Nan escreveu:
Some mmap related macros have different values for different
architectures. This patch introduces uapi mman.h for each
architectures.

Three headers are cloned from kernel include to tools/include:

tools/include/uapi/asm-generic/mman-common.h
tools/include/uapi/asm-generic/mman.h
tools/include/uapi/linux/mman.h
Cool, the above was done as copies, why not the rest? IIRC you mentioned
some reasoning behind that decision, but we need it spelled out here.

For instance, I went on and look at arch/xtensa/include/uapi/asm/mman.h,
and couldn't find why we shouldn't copy it just like the three files
above.

I'm looking now at why the build breaks in so many systems, first hunch
is that bits/ part (the ones without the failure details probably have
the same errors), alpine uses musl libc, but some that broke are glibc
based.
So, please take a look at my perf/core branch, I applied 1/3 and 3/3,
but took a different path for 2/3, now it builds for all systems I have
containers for:
This still fails for me on ppc64. Perhaps we should guard
P_MMAP_FLAG(32BIT) and potentially others with a #ifdef, which was
earlier reverted by commit 256763b0 ("perf trace beauty mmap: Add more
conditional defines")?

Perhaps we should set all non-exist flag to 0 in each uapi mman.h?

Thank you.

- Naveen

---
In file included from builtin-trace.c:560:0:
trace/beauty/mmap.c: In function âsyscall_arg__scnprintf_mmap_flagsâ:
trace/beauty/mmap.c:38:14: error: âMAP_32BITâ undeclared (first use in this function)
if (flags & MAP_##n) { \
^
trace/beauty/mmap.c:45:2: note: in expansion of macro âP_MMAP_FLAGâ
P_MMAP_FLAG(32BIT);
^
trace/beauty/mmap.c:38:14: note: each undeclared identifier is reported only once for each function it appears in
if (flags & MAP_##n) { \
^
trace/beauty/mmap.c:45:2: note: in expansion of macro âP_MMAP_FLAGâ
P_MMAP_FLAG(32BIT);
^
CC bench/mem-functions.o
mv: cannot stat â./.builtin-trace.o.tmpâ: No such file or directory
make[2]: *** [builtin-trace.o] Error 1
make[2]: *** Waiting for unfinished jobs....