From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from verein.lst.de ([213.95.11.211]:53610 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750766AbeE2HNv (ORCPT ); Tue, 29 May 2018 03:13:51 -0400 Date: Tue, 29 May 2018 09:20:01 +0200 From: Christoph Hellwig To: kbuild test robot Cc: Christoph Hellwig , kbuild-all@01.org, linux-fsdevel@vger.kernel.org, Greg Kroah-Hartman , "Darrick J. Wong" , viro@zeniv.linux.org.uk, x86@kernel.org Subject: Re: [vfs:hch.aio 7/40] include/linux/syscalls.h:233:18: warning: 'sys_io_pgetevents' alias between functions of incompatible types 'long int(aio_context_t, long int, long int, struct io_event *, struct timespec *, const struct __aio_sigset *)' and 'long int(long int, long int, long int, long int, long int, long int)' Message-ID: <20180529072001.GA393@lst.de> References: <201805291127.t3LJlHRg%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201805291127.t3LJlHRg%fengguang.wu@intel.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: I'm not seeing anything like this in my i386 builds. Is this something new in gcc 8.1? Also it seems deeply hidden in the syscall macros, so I might need some help understanding those. On Tue, May 29, 2018 at 11:12:31AM +0800, kbuild test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git hch.aio > head: 89b310a2b28dafbf3958e292785d51b7017da19e > commit: 7a074e96dee62586c935c80cecd931431bfdd0be [7/40] aio: implement io_pgetevents > config: i386-randconfig-c0-05290848 (attached as .config) > compiler: gcc-8 (Debian 8.1.0-3) 8.1.0 > reproduce: > git checkout 7a074e96dee62586c935c80cecd931431bfdd0be > # save the attached .config to linux build tree > make ARCH=i386 > > All warnings (new ones prefixed by >>): > > In file included from fs/aio.c:19: > include/linux/syscalls.h:233:18: warning: 'sys_io_setup' alias between functions of incompatible types 'long int(unsigned int, aio_context_t *)' and 'long int(long int, long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:212:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1322:1: note: in expansion of macro 'SYSCALL_DEFINE2' > SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:238:18: note: aliased declaration here > asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^~~~~~~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:212:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1322:1: note: in expansion of macro 'SYSCALL_DEFINE2' > SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) > ^~~~~~~~~~~~~~~ > >> include/linux/syscalls.h:233:18: warning: 'sys_io_pgetevents' alias between functions of incompatible types 'long int(aio_context_t, long int, long int, struct io_event *, struct timespec *, const struct __aio_sigset *)' and 'long int(long int, long int, long int, long int, long int, long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1931:1: note: in expansion of macro 'SYSCALL_DEFINE6' > SYSCALL_DEFINE6(io_pgetevents, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:238:18: note: aliased declaration here > asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^~~~~~~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1931:1: note: in expansion of macro 'SYSCALL_DEFINE6' > SYSCALL_DEFINE6(io_pgetevents, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:233:18: warning: 'sys_io_getevents' alias between functions of incompatible types 'long int(aio_context_t, long int, long int, struct io_event *, struct timespec *)' and 'long int(long int, long int, long int, long int, long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:215:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1913:1: note: in expansion of macro 'SYSCALL_DEFINE5' > SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:238:18: note: aliased declaration here > asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^~~~~~~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:215:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1913:1: note: in expansion of macro 'SYSCALL_DEFINE5' > SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:233:18: warning: 'sys_io_cancel' alias between functions of incompatible types 'long int(aio_context_t, struct iocb *, struct io_event *)' and 'long int(long int, long int, long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:213:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1842:1: note: in expansion of macro 'SYSCALL_DEFINE3' > SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:238:18: note: aliased declaration here > asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^~~~~~~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:213:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1842:1: note: in expansion of macro 'SYSCALL_DEFINE3' > SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:233:18: warning: 'sys_io_submit' alias between functions of incompatible types 'long int(aio_context_t, long int, struct iocb **)' and 'long int(long int, long int, long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:213:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1767:1: note: in expansion of macro 'SYSCALL_DEFINE3' > SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:238:18: note: aliased declaration here > asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^~~~~~~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~ > include/linux/syscalls.h:213:36: note: in expansion of macro 'SYSCALL_DEFINEx' > #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~ > fs/aio.c:1767:1: note: in expansion of macro 'SYSCALL_DEFINE3' > SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, > ^~~~~~~~~~~~~~~ > include/linux/syscalls.h:233:18: warning: 'sys_io_destroy' alias between functions of incompatible types 'long int(aio_context_t)' and 'long int(long int)' [-Wattribute-alias] > asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > ^~~ > include/linux/syscalls.h:222:2: note: in expansion of macro '__SYSCALL_DEFINEx' > __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > > vim +233 include/linux/syscalls.h > > 609320c8a Yonghong Song 2017-09-07 219 > bed1ffca0 Frederic Weisbecker 2009-03-13 220 #define SYSCALL_DEFINEx(x, sname, ...) \ > 99e621f79 Al Viro 2013-03-05 221 SYSCALL_METADATA(sname, x, __VA_ARGS__) \ > bed1ffca0 Frederic Weisbecker 2009-03-13 @222 __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) > bed1ffca0 Frederic Weisbecker 2009-03-13 223 > 2cf096668 Al Viro 2013-01-21 224 #define __PROTECT(...) asmlinkage_protect(__VA_ARGS__) > 1bd21c6c2 Dominik Brodowski 2018-04-05 225 > e145242ea Dominik Brodowski 2018-04-09 226 /* > e145242ea Dominik Brodowski 2018-04-09 227 * The asmlinkage stub is aliased to a function named __se_sys_*() which > e145242ea Dominik Brodowski 2018-04-09 228 * sign-extends 32-bit ints to longs whenever needed. The actual work is > e145242ea Dominik Brodowski 2018-04-09 229 * done within __do_sys_*(). > e145242ea Dominik Brodowski 2018-04-09 230 */ > 1bd21c6c2 Dominik Brodowski 2018-04-05 231 #ifndef __SYSCALL_DEFINEx > bed1ffca0 Frederic Weisbecker 2009-03-13 232 #define __SYSCALL_DEFINEx(x, name, ...) \ > 83460ec8d Andi Kleen 2013-11-12 @233 asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > e145242ea Dominik Brodowski 2018-04-09 234 __attribute__((alias(__stringify(__se_sys##name)))); \ > c9a211951 Howard McLauchlan 2018-03-21 235 ALLOW_ERROR_INJECTION(sys##name, ERRNO); \ > e145242ea Dominik Brodowski 2018-04-09 236 static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > e145242ea Dominik Brodowski 2018-04-09 237 asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > e145242ea Dominik Brodowski 2018-04-09 238 asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > 1a94bc347 Heiko Carstens 2009-01-14 239 { \ > e145242ea Dominik Brodowski 2018-04-09 240 long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\ > 07fe6e00f Al Viro 2013-01-21 241 __MAP(x,__SC_TEST,__VA_ARGS__); \ > 2cf096668 Al Viro 2013-01-21 242 __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ > 2cf096668 Al Viro 2013-01-21 243 return ret; \ > 1a94bc347 Heiko Carstens 2009-01-14 244 } \ > e145242ea Dominik Brodowski 2018-04-09 245 static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > 1bd21c6c2 Dominik Brodowski 2018-04-05 246 #endif /* __SYSCALL_DEFINEx */ > 1a94bc347 Heiko Carstens 2009-01-14 247 > > :::::: The code at line 233 was first introduced by commit > :::::: 83460ec8dcac14142e7860a01fa59c267ac4657c syscalls.h: use gcc alias instead of assembler aliases for syscalls > > :::::: TO: Andi Kleen > :::::: CC: Linus Torvalds > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation ---end quoted text---