Re: [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers

From: Jiri Olsa
Date: Mon Jan 12 2015 - 06:09:42 EST


On Sat, Jan 10, 2015 at 04:40:52PM +0530, Vineet Gupta wrote:
> This is due to duplicated unistd inclusion (via uClibc headers + kernel headers)
> Also seen on ARM uClibc based tools
>
> ------- ARC build ---------->8-------------
>
> CC util/evlist.o
> In file included from
> ~/arc/k.org/arch/arc/include/uapi/asm/unistd.h:25:0,
> from util/../perf-sys.h:10,
> from util/../perf.h:15,
> from util/event.h:7,
> from util/event.c:3:
> ~/arc/k.org/include/uapi/asm-generic/unistd.h:906:0:
> warning: "__NR_fcntl64" redefined [enabled by default]
> #define __NR_fcntl64 __NR3264_fcntl
> ^
> In file included from
> ~/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/sys/syscall.h:24:0,
> from util/../perf-sys.h:6,
> ----------------->8-------------------
>
> ------- ARM build ---------->8-------------
>
> CC FPIC plugin_scsi.o
> In file included from util/../perf-sys.h:9:0,
> from util/../perf.h:15,
> from util/cache.h:7,
> from perf.c:12:
> ~/arc/k.org/arch/arm/include/uapi/asm/unistd.h:28:0:
> warning: "__NR_restart_syscall" redefined [enabled by default]
> In file included from
> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/syscall.h:25:0,
> from util/../perf-sys.h:6,
> from util/../perf.h:15,
> from util/cache.h:7,
> from perf.c:12:
> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/sysnum.h:17:0:
> note: this is the location of the previous definition
> ----------------->8-------------------

Could you please point out what's the right logic for including those headers?

I've always thought that just adding:

#include <linux/unistd.h>

should be safe no matter what.. feels like bug in one of those
header files? (uClibc headers & kernel headers)

thanks for info,
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/