Re: [GIT PULL 00/66] perf/core improvements and fixes

From: Josh Poimboeuf
Date: Wed Jul 13 2016 - 16:49:31 EST


On Wed, Jul 13, 2016 at 09:35:27AM +0200, Ingo Molnar wrote:
>
> Hm, the objtool build broke:
>
> GEN arch/x86/insn/inat-tables.c
> CC arch/x86/decode.o
> In file included from /home/mingo/tip/tools/include/linux/hashtable.h:12:0,
> from arch/x86/../../elf.h:24,
> from arch/x86/decode.c:26:
> /home/mingo/tip/tools/include/linux/bitops.h:12:0: error: "BITS_PER_LONG"
> redefined [-Werror]
> #define BITS_PER_LONG __WORDSIZE
> ^
> In file included from /usr/include/x86_64-linux-gnu/asm/bitsperlong.h:10:0,
> from /usr/include/asm-generic/int-ll64.h:11,
> from /usr/include/asm-generic/types.h:6,
> from /usr/include/x86_64-linux-gnu/asm/types.h:4,
> from /home/mingo/tip/tools/include/linux/types.h:9,
> from /home/mingo/tip/tools/include/linux/list.h:4,
> from arch/x86/../../elf.h:23,
> from arch/x86/decode.c:26:
> /home/mingo/tip/tools/include/asm-generic/bitsperlong.h:10:0: note: this is the
> location of the previous definition
> #define BITS_PER_LONG 32
> ^

Hi Ingo,

There's still another issue. Notice in the last line there that
BITS_PER_LONG is getting incorrectly set to 32, at least for objtool.

That '#define BITS_PER_LONG 32' comes from the following code in
tools/include/asm-generic/bitsperlong.h:

#ifdef CONFIG_64BIT
#define BITS_PER_LONG 64
#else
#define BITS_PER_LONG 32
#endif /* CONFIG_64BIT */

Because objtool doesn't have CONFIG_64BIT defined, it falls through to
the '#else' condition. I think tools code shouldn't be relying on
kernel config options.

--
Josh