From: kbuild test robot <lkp@intel.com>
To: David Howells <dhowells@redhat.com>
Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 07/45] C++: Define a header with some C++ type traits for type checking
Date: Mon, 2 Apr 2018 15:00:57 +0800 [thread overview]
Message-ID: <201804021443.GNDXmtKG%fengguang.wu@intel.com> (raw)
In-Reply-To: <152261525734.30503.803101607707002603.stgit@warthog.procyon.org.uk>
[-- Attachment #1: Type: text/plain, Size: 9895 bytes --]
Hi David,
I love your patch! Yet something to improve:
[auto build test ERROR on v4.16-rc7]
[cannot apply to linus/master tip/x86/core tip/locking/core v4.16 next-20180329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/David-Howells/C-Convert-the-kernel-to-C/20180402-120344
config: x86_64-randconfig-x016-201813 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
Note: the linux-review/David-Howells/C-Convert-the-kernel-to-C/20180402-120344 HEAD 6389202e6d769ba42860793ff4bb839d768ced5a builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
include/asm-generic/bitops/le.h: In function 'int test_and_clear_bit_le(int, void*)':
include/asm-generic/bitops/le.h:85:55: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
^
In file included from include/linux/bitops.h:38:0,
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
arch/x86/include/asm/bitops.h:265:29: note: initializing argument 2 of 'bool test_and_clear_bit(long int, volatile long unsigned int*)'
static __always_inline bool test_and_clear_bit(long nr, volatile unsigned long *addr)
^~~~~~~~~~~~~~~~~~
In file included from arch/x86/include/asm/bitops.h:521:0,
from include/linux/bitops.h:38,
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
include/asm-generic/bitops/le.h: In function 'int __test_and_set_bit_le(int, void*)':
include/asm-generic/bitops/le.h:90:55: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
^
In file included from include/linux/bitops.h:38:0,
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
arch/x86/include/asm/bitops.h:246:29: note: initializing argument 2 of 'bool __test_and_set_bit(long int, volatile long unsigned int*)'
static __always_inline bool __test_and_set_bit(long nr, volatile unsigned long *addr)
^~~~~~~~~~~~~~~~~~
In file included from arch/x86/include/asm/bitops.h:521:0,
from include/linux/bitops.h:38,
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
include/asm-generic/bitops/le.h: In function 'int __test_and_clear_bit_le(int, void*)':
include/asm-generic/bitops/le.h:95:57: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
^
In file included from include/linux/bitops.h:38:0,
from include/linux/kernel.h:12,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
arch/x86/include/asm/bitops.h:287:29: note: initializing argument 2 of 'bool __test_and_clear_bit(long int, volatile long unsigned int*)'
static __always_inline bool __test_and_clear_bit(long nr, volatile unsigned long *addr)
^~~~~~~~~~~~~~~~~~~~
In file included from include/linux/kernel.h:7:0,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
include/linux/printk.h: At global scope:
include/linux/linkage.h:16:31: error: expected unqualified-id before string constant
#define CPP_ASMLINKAGE extern "C"
^
include/linux/linkage.h:22:20: note: in expansion of macro 'CPP_ASMLINKAGE'
#define asmlinkage CPP_ASMLINKAGE
^~~~~~~~~~~~~~
include/linux/printk.h:141:8: note: in expansion of macro 'asmlinkage'
extern asmlinkage __printf(1, 2)
^~~~~~~~~~
include/linux/linkage.h:16:31: error: expected unqualified-id before string constant
#define CPP_ASMLINKAGE extern "C"
^
include/linux/linkage.h:22:20: note: in expansion of macro 'CPP_ASMLINKAGE'
#define asmlinkage CPP_ASMLINKAGE
^~~~~~~~~~~~~~
include/linux/printk.h:282:8: note: in expansion of macro 'asmlinkage'
extern asmlinkage void dump_stack(void) __cold;
^~~~~~~~~~
In file included from include/linux/kernel.h:16:0,
from include/asm-generic/bug.h:18,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from arch/x86/purgatory/purgatory.c:13:
arch/x86/purgatory/purgatory.c: In function 'int verify_sha256_digest()':
include/linux/build_bug.h:29:45: error: types may not be defined in 'sizeof' expressions
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
^
include/linux/compiler-gcc.h:66:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__is_array(a))
^~~~~~~~~~~~~~~~~
include/linux/kernel.h:72:59: note: in expansion of macro '__must_be_array'
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
^~~~~~~~~~~~~~~
arch/x86/purgatory/purgatory.c:48:32: note: in expansion of macro 'ARRAY_SIZE'
end = purgatory_sha_regions + ARRAY_SIZE(purgatory_sha_regions);
^~~~~~~~~~
>> include/linux/build_bug.h:29:58: error: negative width in bit-field 'verify_sha256_digest()::<unnamed struct>::<anonymous>'
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
^
include/linux/compiler-gcc.h:66:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__is_array(a))
^~~~~~~~~~~~~~~~~
include/linux/kernel.h:72:59: note: in expansion of macro '__must_be_array'
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
^~~~~~~~~~~~~~~
arch/x86/purgatory/purgatory.c:48:32: note: in expansion of macro 'ARRAY_SIZE'
end = purgatory_sha_regions + ARRAY_SIZE(purgatory_sha_regions);
^~~~~~~~~~
make[2]: *** [arch/x86/purgatory/purgatory.o] Error 1
make[2]: *** [arch/x86/purgatory/sha256.o] Error 1
make[2]: Target 'arch/x86/purgatory/kexec-purgatory.c' not remade because of errors.
make[1]: *** [archprepare] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [sub-make] Error 2
vim +29 include/linux/build_bug.h
bc6245e5 Ian Abbott 2017-07-10 16
bc6245e5 Ian Abbott 2017-07-10 17 /* Force a compilation error if a constant expression is not a power of 2 */
bc6245e5 Ian Abbott 2017-07-10 18 #define __BUILD_BUG_ON_NOT_POWER_OF_2(n) \
bc6245e5 Ian Abbott 2017-07-10 19 BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
bc6245e5 Ian Abbott 2017-07-10 20 #define BUILD_BUG_ON_NOT_POWER_OF_2(n) \
bc6245e5 Ian Abbott 2017-07-10 21 BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
bc6245e5 Ian Abbott 2017-07-10 22
bc6245e5 Ian Abbott 2017-07-10 23 /*
bc6245e5 Ian Abbott 2017-07-10 24 * Force a compilation error if condition is true, but also produce a
bc6245e5 Ian Abbott 2017-07-10 25 * result (of value 0 and type size_t), so the expression can be used
bc6245e5 Ian Abbott 2017-07-10 26 * e.g. in a structure initializer (or where-ever else comma expressions
bc6245e5 Ian Abbott 2017-07-10 27 * aren't permitted).
bc6245e5 Ian Abbott 2017-07-10 28 */
bc6245e5 Ian Abbott 2017-07-10 @29 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
bc6245e5 Ian Abbott 2017-07-10 30
:::::: The code at line 29 was first introduced by commit
:::::: bc6245e5efd70c41eaf9334b1b5e646745cb0fb3 bug: split BUILD_BUG stuff out into <linux/build_bug.h>
:::::: TO: Ian Abbott <abbotti@mev.co.uk>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28314 bytes --]
next prev parent reply other threads:[~2018-04-02 7:01 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-01 20:40 [PATCH 00/45] C++: Convert the kernel to C++ David Howells
2018-04-01 20:40 ` [PATCH 01/45] Use UINT_MAX, not -1, to represent an invalid UID, GID or project ID David Howells
2018-04-01 23:04 ` Randy Dunlap
2018-04-01 20:40 ` [PATCH 02/45] Fix exception_enter() return value David Howells
2018-04-05 1:34 ` Sasha Levin
2018-04-01 20:40 ` [PATCH 03/45] Fix loop var in be32_to_cpu_array() and cpu_to_be32_array() David Howells
2018-04-01 20:40 ` [PATCH 04/45] Fix use of ACPI_COMPANION_SET() David Howells
2018-04-01 20:40 ` [PATCH 05/45] C++: Set compilation as C++ for .c files David Howells
2018-04-02 6:10 ` kbuild test robot
2018-04-02 6:10 ` kbuild test robot
2018-04-03 13:16 ` David Howells
2018-04-03 13:27 ` Fengguang Wu
2018-04-10 8:44 ` David Howells
2018-04-10 9:45 ` Fengguang Wu
2018-04-11 1:13 ` Li, Philip
2018-04-01 20:40 ` [PATCH 06/45] C++: Do some basic C++ type definition David Howells
2018-04-02 4:37 ` kbuild test robot
2018-04-02 6:10 ` kbuild test robot
2018-04-01 20:40 ` [PATCH 07/45] C++: Define a header with some C++ type traits for type checking David Howells
2018-04-02 7:00 ` kbuild test robot [this message]
2018-04-01 20:41 ` [PATCH 08/45] C++: Implement abs() as an inline template function David Howells
2018-04-01 20:41 ` [PATCH 09/45] C++: x86: Fix the x86 syscall table production for C++ David Howells
2018-04-02 7:57 ` kbuild test robot
2018-04-01 20:41 ` [PATCH 10/45] C++: x86: Turn xchg(), xadd() & co. into inline template functions David Howells
2018-04-01 20:41 ` [PATCH 11/45] C++: x86: Turn cmpxchg() " David Howells
2018-04-01 20:41 ` [PATCH 12/45] C++: x86: Turn cmpxchg_double() " David Howells
2018-04-01 20:41 ` [PATCH 13/45] C++: x86: Turn cmpxchg64() " David Howells
2018-04-01 20:41 ` [PATCH 14/45] C++: x86: Turn put_user(), get_user() " David Howells
2018-04-01 20:41 ` [PATCH 15/45] C++: Need space between string and symbol David Howells
2018-04-01 20:41 ` [PATCH 16/45] C++: Disable VERIFY_OCTAL_PERMISSIONS() for the moment David Howells
2018-04-01 20:41 ` [PATCH 17/45] C++: Turn READ_ONCE(), WRITE_ONCE() & co. into inline template functions David Howells
2018-04-01 20:42 ` [PATCH 18/45] C++: Turn RCU accessors " David Howells
2018-04-01 20:42 ` [PATCH 19/45] C++: Turn ktime_add/sub_ns() " David Howells
2018-04-01 20:42 ` [PATCH 20/45] C++: init/main: Constify pointers David Howells
2018-04-01 20:42 ` [PATCH 21/45] C++: Set the type of atomic64_t to s64 David Howells
2018-04-01 20:42 ` [PATCH 22/45] C++: Define apic_intr_mode after the enum definition, not before David Howells
2018-04-01 20:42 ` [PATCH 23/45] C++: Don't do "extern asmlinkage" David Howells
2018-04-01 20:42 ` [PATCH 24/45] C++: Fix BUILD_BUG_ON_ZERO() David Howells
2018-04-01 20:42 ` [PATCH 25/45] C++: Fix void variables David Howells
2018-04-01 20:42 ` [PATCH 26/45] C++: Can't have variable/member names the same as typedef names David Howells
2018-04-01 20:42 ` [PATCH 27/45] C++: Disable __same_type() for the moment David Howells
2018-04-01 20:43 ` [PATCH 28/45] C++: Move ctx_state enum out of struct context_tracking David Howells
2018-04-01 20:43 ` [PATCH 29/45] C++: Move the print_line_t enum before first use David Howells
2018-04-01 20:43 ` [PATCH 30/45] C++: Include linux/hrtimer.h from linux/timer.h David Howells
2018-04-01 20:43 ` [PATCH 31/45] C++: Avoid using 'compl' and 'and' as names David Howells
2018-04-02 7:57 ` kbuild test robot
2018-04-01 20:43 ` [PATCH 32/45] C++: __to_fd() needs to reduce the size of v for struct fd::flags David Howells
2018-04-01 20:43 ` [PATCH 33/45] C++: Move irqchip_irq_state enum David Howells
2018-04-01 20:43 ` [PATCH 34/45] C++: Fix up use of LIST_POISON* David Howells
2018-04-01 20:43 ` [PATCH 35/45] C++: Fix static_branch_likely/unlikely() David Howells
2018-04-01 20:43 ` [PATCH 36/45] C++: Fix kernfs_type() int->enum David Howells
2018-04-01 20:43 ` [PATCH 37/45] C++: Fix page_zonenum() int->enum David Howells
2018-04-01 20:44 ` [PATCH 38/45] C++: mutex_trylock_recursive_enum() int->enum David Howells
2018-04-01 23:10 ` Randy Dunlap
2018-04-01 20:44 ` [PATCH 39/45] C++: Fix spinlock initialisation David Howells
2018-04-01 20:44 ` [PATCH 40/45] C++: Fix sema_init() David Howells
2018-04-01 20:44 ` [PATCH 41/45] C++: Cast in bitops David Howells
2018-04-02 6:10 ` kbuild test robot
2018-04-01 20:44 ` [PATCH 42/45] C++: Hide C++ keywords David Howells
2018-04-02 7:32 ` kbuild test robot
2018-04-01 20:44 ` [PATCH 43/45] C++: Don't need to declare struct pgd_t after typedef David Howells
2018-04-01 20:44 ` [PATCH 44/45] C++: Can't declare unsized-array in struct cgroup David Howells
2018-04-01 20:44 ` [PATCH 45/45] C++: Move initcall_level_names[] to __initdata section David Howells
2018-04-01 22:20 ` [PATCH 00/45] C++: Convert the kernel to C++ Randy Dunlap
2018-04-02 9:28 ` Vegard Nossum
2024-01-09 19:57 ` H. Peter Anvin
2024-01-09 23:29 ` Andrew Pinski
2024-01-11 21:01 ` Arsen Arsenović
2024-01-10 0:29 ` David Howells
2024-01-10 8:58 ` Jiri Slaby
2024-01-10 13:04 ` Neal Gompa
2024-01-10 15:52 ` Jason Gunthorpe
2024-01-10 16:05 ` H. Peter Anvin
2024-01-10 16:25 ` Neal Gompa
2024-01-10 17:57 ` Theodore Ts'o
2024-01-12 2:23 ` H. Peter Anvin
2024-01-12 2:52 ` Kent Overstreet
2024-01-11 8:06 ` Andreas Herrmann
2024-01-10 15:01 ` Michael de Lang
[not found] ` <69fe1c0c-b5ec-4031-b719-d9c14742929c@metux.net>
2024-01-12 21:58 ` Michael de Lang
2024-01-11 4:24 ` John Hubbard
2024-01-11 5:09 ` Dave Airlie
2024-01-11 15:24 ` Eric Curtin
2024-01-11 21:37 ` David Laight
2024-01-11 12:39 ` Chris Down
2024-01-11 19:40 ` David Laight
2024-01-24 6:53 ` Jiri Slaby
2024-01-12 2:54 ` H. Peter Anvin
2024-01-12 8:52 ` David Howells
2024-01-12 23:53 ` H. Peter Anvin
2024-01-09 23:40 ` David Howells
2024-01-10 7:13 ` Alexey Dobriyan
2024-01-12 2:25 ` H. Peter Anvin
2024-01-12 2:40 ` H. Peter Anvin
2024-01-11 23:09 ` Arsen Arsenović
2024-01-12 9:20 ` David Howells
2024-01-12 21:35 ` Arsen Arsenović
2024-01-12 23:41 ` David Howells
2025-02-27 16:44 ` Convert the kernel to C++: Lock-holding class David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201804021443.GNDXmtKG%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=dhowells@redhat.com \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®