openrisc: Define __kernel_size_t to suppress compiler warnings
Stafford Horne
maintainerPATCH 1/1 openrisc: Define __kernel_size_t to suppress compiler warnings
The current build throws numerous warnings like:
mm/percpu.c:1442:9: warning: format '%zu' expects argument of type 'size_t', but argument 3 has type 'unsigned int' [-Wformat=]
ai->unit_size, ai->alloc_size / ai->atom_size, ai->atom_size);
^ mm/percpu.c:1442:9: warning: format '%zu' expects argument of type 'size_t', but argument 4 has type 'unsigned int' [-Wformat=]
This change defines size_t as unsigned long, after this change there are no warnings.
--- arch/openrisc/include/asm/Kbuild | 1 - arch/openrisc/include/uapi/asm/Kbuild | 1 + arch/openrisc/include/uapi/asm/posix_types.h | 24 ++++++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 arch/openrisc/include/uapi/asm/posix_types.h
arch/openrisc/include/asm/Kbuild +0 -1
@@ -40,7 +40,6 @@ generic-y += msgbuf.h generic-y += pci.h generic-y += percpu.h generic-y += poll.h -generic-y += posix_types.h generic-y += preempt.h generic-y += resource.h generic-y += sections.h
arch/openrisc/include/uapi/asm/Kbuild +1 -0
@@ -5,6 +5,7 @@ header-y += byteorder.h header-y += elf.h header-y += kvm_para.h header-y += param.h +header-y += posix_types.h header-y += ptrace.h header-y += sigcontext.h header-y += unistd.h
arch/openrisc/include/uapi/asm/posix_types.h new file +24 -0
@@ -0,0 +1,24 @@ +/* +* This file is subject to the terms and conditions of the GNU General Public +* License. See the file "COPYING" in the main directory of this archive +* for more details. +* +* Copyright (C) 2016 by Stafford Horne +*/ +#ifndef _ASM_POSIX_TYPES_H +#define _ASM_POSIX_TYPES_H + +/* +* This file is generally used by user-level software, so you need to +* be a little careful about namespace pollution etc. Also, we cannot +* assume GCC is being used. +*/ + +typedef unsigned long __kernel_size_t ; +typedef long __kernel_ssize_t ; +typedef long __kernel_ptrdiff_t ; +#define __kernel_size_t __kernel_size_t + +#include <asm-generic/posix_types.h> + +#endif /* _ASM_POSIX_TYPES_H */
Signature · 1 line
2.7.4
kbuild test robot
build boturl: https://github.com/0day-ci/linux/commits/Stafford-Horne/openrisc-Define-__kernel_size_t-to-suppress-compiler-warnings/20161221-024243 config: openrisc-or1ksim_defconfig (attached as .config)…
Hi Stafford,
[auto build test WARNING on linus/master]
[also build test WARNING on v4.9 next-20161220]
[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/Stafford-Horne/openrisc-Define-__kernel_size_t-to-suppress-compiler-warnings/20161221-024243
config: openrisc-or1ksim_defconfig (attached as .config)
compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=openrisc
All warnings (new ones prefixed by >>):
crypto/drbg.c: In function 'drbg_seed':
>> crypto/drbg.c:1062:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int'
crypto/drbg.c: In function 'drbg_generate':
crypto/drbg.c:1275:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int'
--
drivers/base/component.c: In function 'find_components':
>> drivers/base/component.c:101:3: warning: format '%zu' expects type 'size_t', but argument 4 has type 'long unsigned int' -- drivers/char/random.c: In function 'urandom_read': >> drivers/char/random.c:1749:10: warning: format '%zd' expects type 'signed size_t', but argument 3 has type 'size_t' drivers/char/random.c: In function 'write_pool': >> drivers/char/random.c:1783:11: warning: comparison of distinct pointer types lacks a cast -- drivers/tty/serial/earlycon.c: In function 'earlycon_init': >> drivers/tty/serial/earlycon.c:74:32: warning: comparison of distinct pointer types lacks a cast -- fs/libfs.c: In function 'simple_attr_write': >> fs/libfs.c:876:9: warning: comparison of distinct pointer types lacks a cast -- lib/iov_iter.c: In function 'sanity': >> lib/iov_iter.c:319:2: warning: format '%zd' expects type 'signed size_t', but argument 3 has type 'size_t' -- lib/kstrtox.c: In function 'kstrtobool_from_user': >> lib/kstrtox.c:376:10: warning: comparison of distinct pointer types lacks a cast
lib/kstrtox.c: In function 'kstrtoull_from_user':
lib/kstrtox.c:398:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtoll_from_user':
lib/kstrtox.c:399:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtoul_from_user':
lib/kstrtox.c:400:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtol_from_user':
lib/kstrtox.c:401:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtouint_from_user':
lib/kstrtox.c:402:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtoint_from_user':
lib/kstrtox.c:403:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtou16_from_user':
lib/kstrtox.c:404:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtos16_from_user':
lib/kstrtox.c:405:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtou8_from_user':
lib/kstrtox.c:406:1: warning: comparison of distinct pointer types lacks a cast lib/kstrtox.c: In function 'kstrtos8_from_user':
lib/kstrtox.c:407:1: warning: comparison of distinct pointer types lacks a cast
--
In file included from mm/percpu.c:822:0:
mm/percpu-km.c: In function 'pcpu_verify_alloc_info':
>> mm/percpu-km.c:106:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int' mm/percpu.c: In function 'pcpu_alloc': >> mm/percpu.c:891:3: warning: format '%zu' expects type 'size_t', but argument 4 has type 'long unsigned int'
mm/percpu.c:891:3: warning: format '%zu' expects type 'size_t', but argument 5 has type 'long unsigned int' mm/percpu.c:1032:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int' mm/percpu.c:1032:3: warning: format '%zu' expects type 'size_t', but argument 3 has type 'long unsigned int' mm/percpu.c: In function 'pcpu_dump_alloc_info':
mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 3 has type 'long unsigned int' mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 4 has type 'long unsigned int' mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 5 has type 'long unsigned int' mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 6 has type 'long unsigned int' mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 7 has type 'long unsigned int' mm/percpu.c:1460:9: warning: format '%zu' expects type 'size_t', but argument 8 has type 'long unsigned int'
--
mm/dmapool.c: In function 'show_pools':
>> mm/dmapool.c:99:6: warning: format '%4Zu' expects type 'size_t', but argument 6 has type 'long unsigned int' mm/dmapool.c:99:6: warning: format '%4Zu' expects type 'size_t', but argument 7 has type 'long unsigned int' -- net/core/dev_ioctl.c: In function 'dev_ifsioc_locked': >> net/core/dev_ioctl.c:149:11: warning: comparison of distinct pointer types lacks a cast
net/core/dev_ioctl.c: In function 'dev_ifsioc':
net/core/dev_ioctl.c:270:10: warning: comparison of distinct pointer types lacks a cast
--
net/sunrpc/xprtsock.c: In function 'bc_malloc':
>> net/sunrpc/xprtsock.c:2553:3: warning: format '%zu' expects type 'size_t', but argument 4 has type 'long unsigned int'
..
vim +1062 crypto/drbg.c
541af946 Stephan Mueller 2014-05-31 1046 *
541af946 Stephan Mueller 2014-05-31 1047 * return:
541af946 Stephan Mueller 2014-05-31 1048 * 0 on success
541af946 Stephan Mueller 2014-05-31 1049 * error value otherwise
541af946 Stephan Mueller 2014-05-31 1050 */
541af946 Stephan Mueller 2014-05-31 1051 static int drbg_seed(struct drbg_state *drbg, struct drbg_string *pers,
541af946 Stephan Mueller 2014-05-31 1052 bool reseed)
541af946 Stephan Mueller 2014-05-31 1053 {
57225e67 Stephan Mueller 2015-06-09 1054 int ret;
57225e67 Stephan Mueller 2015-06-09 1055 unsigned char entropy[((32 + 16) * 2)];
57225e67 Stephan Mueller 2015-06-09 1056 unsigned int entropylen = drbg_sec_strength(drbg->core->flags);
541af946 Stephan Mueller 2014-05-31 1057 struct drbg_string data1;
8c987166 Stephan Mueller 2014-06-28 1058 LIST_HEAD(seedlist);
541af946 Stephan Mueller 2014-05-31 1059
541af946 Stephan Mueller 2014-05-31 1060 /* 9.1 / 9.2 / 9.3.1 step 3 */
541af946 Stephan Mueller 2014-05-31 1061 if (pers && pers->len > (drbg_max_addtl(drbg))) {
a9089571 Stephan Mueller 2014-07-06 @1062 pr_devel("DRBG: personalization string too long %zu\n",
541af946 Stephan Mueller 2014-05-31 1063 pers->len);
541af946 Stephan Mueller 2014-05-31 1064 return -EINVAL;
541af946 Stephan Mueller 2014-05-31 1065 }
541af946 Stephan Mueller 2014-05-31 1066
8fded592 Herbert Xu 2015-04-21 1067 if (list_empty(&drbg->test_data.list)) {
8fded592 Herbert Xu 2015-04-21 1068 drbg_string_fill(&data1, drbg->test_data.buf,
8fded592 Herbert Xu 2015-04-21 1069 drbg->test_data.len);
541af946 Stephan Mueller 2014-05-31 1070 pr_devel("DRBG: using test entropy\n");:::::: The code at line 1062 was first introduced by commit
:::::: a9089571f2fc203c3ba6595a60f0045f048494da crypto: drbg - Fix format string for debugging statements
:::::: TO: Stephan Mueller <[email protected]> :::::: CC: Herbert Xu <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 7345 bytes
Desc: not available
URL: <http://lists.librecores.org/pipermail/openrisc/attachments/20161221/d003d1ca/attachment.bin>
Hi Stafford,
Quoted 13 lines · kbuild test robot
[auto build test WARNING on linus/master]
[also build test WARNING on v4.9 next-20161220]
[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/Stafford-Horne/openrisc-Define-__kernel_size_t-to-suppress-compiler-warnings/20161221-024243
config: openrisc-or1ksim_defconfig (attached as .config)
compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=openrisc
Quoted 6 lines
All warnings (new ones prefixed by >>):
crypto/drbg.c: In function 'drbg_seed':Quoted 1 line
Quoted 1 line
crypto/drbg.c:1062:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int'
crypto/drbg.c: In function 'drbg_generate':
crypto/drbg.c:1275:3: warning: format '%zu' expects type 'size_t', but argument 2 has type 'long unsigned int'
When I saw this patch, I was already a bit skeptical about it, but I noticed other architectures (e.g. avr32) are doing the same, so I didn't reply.
In my experience, "format '%zu' expects argument of type 'size_t', but argument 3 has type 'unsigned int'" happens when using a compiler that was not configured to use the correct type (should be unsigned long) for size_t. Typically this happens when using a compiler not configured for a Linux target.
Given 0day uses a compiler configured for Linux (or32-linux-gcc), your patch seems to break such (correct) setups.
What kind of compiler are you using?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 8 lines · Geert Uytterhoeven
When I saw this patch, I was already a bit skeptical about it, but I noticed other architectures (e.g. avr32) are doing the same, so I didn't reply.
In my experience, "format '%zu' expects argument of type '
size_t', but argument 3 has type 'unsigned int'" happens when using a compiler that was not configured to use the correct type (should be unsigned long) forsize_t. Typically this happens when using a compiler not configured for a Linux target.
32-bit targets typically use unsigned int for size_t. It is part of the ABI, so all compilers must agree. Since or32 is a out-of-tree port, and gcc defaults to unsigned long for size_t, mismatches can happen if people are using incomplete patches.
Andreas.
Signature · 3 lines
Andreas Schwab, schwab at linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."
Stafford Horne
maintainerHi,
Quoted 11 lines · Andreas Schwab
Quoted 8 lines · Geert Uytterhoeven
When I saw this patch, I was already a bit skeptical about it, but I noticed other architectures (e.g. avr32) are doing the same, so I didn't reply.
In my experience, "format '%zu' expects argument of type '
size_t', but argument 3 has type 'unsigned int'" happens when using a compiler that was not configured to use the correct type (should be unsigned long) forsize_t. Typically this happens when using a compiler not configured for a Linux target.
Quoted 4 lines
32-bit targets typically use unsigned int for
size_t. It is part of the ABI, so all compilers must agree. Since or32 is a out-of-tree port, and gcc defaults to unsigned long forsize_t, mismatches can happen if people are using incomplete patches.
Thanks,
To tell the truth I was skeptical of this patch as well. But I figured I could send out the patch and see what kind of feedback it would get. I was expecting compiler actually, but wasn't sure exactly where.
So this is the best feedback I could have expected. Thanks.
I am using gcc with newlib 'or1k-elf-'. I also have a musl, linux, target compiler. I will look into that.
-Stafford
Quoted 10 lines · Andreas Schwab
Quoted 8 lines · Geert Uytterhoeven
When I saw this patch, I was already a bit skeptical about it, but I noticed other architectures (e.g. avr32) are doing the same, so I didn't reply.
In my experience, "format '%zu' expects argument of type '
size_t', but argument 3 has type 'unsigned int'" happens when using a compiler that was not configured to use the correct type (should be unsigned long) forsize_t. Typically this happens when using a compiler not configured for a Linux target.
Quoted 4 lines
32-bit targets typically use unsigned int for
size_t. It is part of the ABI, so all compilers must agree. Since or32 is a out-of-tree port, and gcc defaults to unsigned long forsize_t, mismatches can happen if people are using incomplete patches.
Right, thanks for correcting me!
It should indeed be unsigned int on 32-bit, and unsigned long on 64-bit.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
kbuild test robot
build boturl: https://github.com/0day-ci/linux/commits/Stafford-Horne/openrisc-Define-__kernel_size_t-to-suppress-compiler-warnings/20161221-024243 config: openrisc-allnoconfig (attached as .config)…
Hi Stafford,
[auto build test WARNING on linus/master]
[also build test WARNING on v4.9 next-20161221]
[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/Stafford-Horne/openrisc-Define-__kernel_size_t-to-suppress-compiler-warnings/20161221-024243
config: openrisc-allnoconfig (attached as .config)
compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=openrisc
All warnings (new ones prefixed by >>):
mm/slab_common.c: In function 'create_boot_cache':
>> mm/slab_common.c:816:6: warning: format '%zu' expects type 'size_t', but argument 3 has type 'long unsigned int'
vim +816 mm/slab_common.c
45530c44 Christoph Lameter 2012-11-28 800 /* Create a cache during boot when no slab services are available yet */
45530c44 Christoph Lameter 2012-11-28 801 void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t size,
45530c44 Christoph Lameter 2012-11-28 802 unsigned long flags)
45530c44 Christoph Lameter 2012-11-28 803 {
45530c44 Christoph Lameter 2012-11-28 804 int err;
45530c44 Christoph Lameter 2012-11-28 805
45530c44 Christoph Lameter 2012-11-28 806 s->name = name;
45530c44 Christoph Lameter 2012-11-28 807 s->size = s->object_size = size;
45906855 Christoph Lameter 2012-11-28 808 s->align = calculate_alignment(flags, ARCH_KMALLOC_MINALIGN, size);
f7ce3190 Vladimir Davydov 2015-02-12 809
f7ce3190 Vladimir Davydov 2015-02-12 810 slab_init_memcg_params(s);
f7ce3190 Vladimir Davydov 2015-02-12 811
45530c44 Christoph Lameter 2012-11-28 812 err = __kmem_cache_create(s, flags);
45530c44 Christoph Lameter 2012-11-28 813
45530c44 Christoph Lameter 2012-11-28 814 if (err)
31ba7346 Christoph Lameter 2013-01-10 815 panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n",
45530c44 Christoph Lameter 2012-11-28 @816 name, size, err);
45530c44 Christoph Lameter 2012-11-28 817
45530c44 Christoph Lameter 2012-11-28 818 s->refcount = -1; /* Exempt from merging for now */
45530c44 Christoph Lameter 2012-11-28 819 }
45530c44 Christoph Lameter 2012-11-28 820
45530c44 Christoph Lameter 2012-11-28 821 struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
45530c44 Christoph Lameter 2012-11-28 822 unsigned long flags)
45530c44 Christoph Lameter 2012-11-28 823 {
45530c44 Christoph Lameter 2012-11-28 824 struct kmem_cache *s = kmem_cache_zalloc(kmem_cache, GFP_NOWAIT);:::::: The code at line 816 was first introduced by commit
:::::: 45530c4474d258b822e2639c786606d8257aad8b mm, sl[au]b: create common functions for boot slab creation
:::::: TO: Christoph Lameter <[email protected]>
:::::: CC: Pekka Enberg <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 4315 bytes
Desc: not available
URL: <http://lists.librecores.org/pipermail/openrisc/attachments/20161221/315cecff/attachment.bin>