Messages in this thread | | | Date | Wed, 19 Sep 2018 10:03:18 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] tools: Remove conflicting BITS_PER_LONG define |
| |
Em Wed, Sep 19, 2018 at 02:28:29PM +0200, Alexander Sverdlin escreveu: > On 12/09/2018 21:21, Arnaldo Carvalho de Melo wrote: > > Em Wed, Sep 12, 2018 at 04:01:07PM -0300, Arnaldo Carvalho de Melo escreveu: > >> Em Wed, Sep 12, 2018 at 07:02:32PM +0200, Alexander Sverdlin escreveu: > >>> CC .../tools/objtool/builtin-check.o > >>> ... > >>> In file included from .../tools/arch/x86/include/uapi/asm/bitsperlong.h:11:0, > >>> from .../tools/include/asm-generic/bitops/__ffs.h:6, > >>> from .../tools/include/asm-generic/bitops.h:16, > >>> from .../tools/include/linux/bitops.h:35, > >>> from .../tools/include/linux/hashtable.h:13, > >>> from elf.h:24, > >>> from check.h:22, > >>> from builtin-check.c:30: > >>> .../tools/include/asm-generic/bitsperlong.h:8:0: error: "BITS_PER_LONG" redefined [-Werror] > >>> #define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__) > >>> > >>> Include <asm/bitsperlong.h> instead as other headers do. > >> > >> Please try test building all tools in tools/ > >> > >> This broke make -C tools/perf/ > > > > Also, where is the build of objtool failing? > I've prepared some examples for you with "-fdirectives-only -save-temps": > > This is what happens ultimately: > > In file included from .../tools/arch/x86/include/uapi/asm/bitsperlong.h:11:0, > from .../tools/include/asm-generic/bitops/__ffs.h:6, > from .../tools/include/asm-generic/bitops.h:16, > from .../tools/include/linux/bitops.h:35, > from .../tools/include/linux/hashtable.h:13, > from elf.h:24, > from check.h:22, > from builtin-check.c:30: > .../tools/include/asm-generic/bitsperlong.h:8:0: error: "BITS_PER_LONG" redefined [-Werror] > #define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__) > > In file included from .../tools/include/linux/hashtable.h:13:0, > from elf.h:24, > from check.h:22, > from builtin-check.c:30: > .../tools/include/linux/bitops.h:13:0: note: this is the location of the previous definition > # define BITS_PER_LONG __WORDSIZE > > And this are relevant parts from builtin-check.i file: > > # 1 "builtin-check.c" > # 1 ".../tools/objtool//" > # 1 "<built-in>" > > ... > > #define __SIZEOF_LONG__ 4 > > ... > > # 1 ".../sys-root/usr/include/bits/wordsize.h" 1 3 4 > > ... > > #define __WORDSIZE 32 > > ... > > # 1 ".../sys-root/usr/include/bits/wordsize.h" 1 3 4 > > ... > > #define __WORDSIZE 32 > > ... > > # 1 ".../sys-root/usr/include/bits/wordsize.h" 1 3 4 > > ... > > #define __WORDSIZE 32 > > ... > > # 1 ".../sys-root/usr/include/bits/wordsize.h" 1 3 4 > > ... > > #define __WORDSIZE 32 > > ... > > # 1 ".../tools/include/linux/bitops.h" 1 > > ... > > #define BITS_PER_LONG __WORDSIZE > > ... > > # 6 ".../tools/include/asm-generic/bitsperlong.h" 2 > > ... > > #define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__) > > It could be that your compiler doesn't define __SIZEOF_LONG__, while my does. > It could be that it's caused by the fact that I'm using a "cross compiler" > (i686 compiler to build x86_64 kernel), maybe I'm just using a newer compiler > than you.
That is indeed a cross build environment I'm not regularly testing, I'm trying these cross builds:
9 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 10 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 19 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-4) 8.2.0 20 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0 21 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.1.0-12) 8.1.0 22 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0 28 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 46 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0 48 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 49 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 50 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 51 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 52 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 53 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 57 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0 58 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0 59 ubuntu:18.04-x-m68k : Ok m68k-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 60 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 61 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 62 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 63 ubuntu:18.04-x-riscv64 : Ok riscv64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 64 ubuntu:18.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 65 ubuntu:18.04-x-sh4 : Ok sh4-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 66 ubuntu:18.04-x-sparc64 : Ok sparc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
I'll try and get one for building a x86_64 tools/perf, tools/lib/{api,bpf,traceevent} to see if I manage to reproduce the problem you're reporting.
- Arnaldo
| |