arch/x86/boot/compressed/../string.c:43:5: warning: no previous prototype for 'bcmp'

From: kernel test robot
Date: Wed Jul 29 2020 - 05:28:44 EST


Hi Nick,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 6ba1b005ffc388c2aeaddae20da29e4810dea298
commit: b059f801a937d164e03b33c1848bb3dca67c0b04 x86/purgatory: Use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS
date: 12 months ago
config: x86_64-randconfig-r032-20200729 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce (this is a W=1 build):
git checkout b059f801a937d164e03b33c1848bb3dca67c0b04
# save the attached .config to linux build tree
make W=1 ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

In file included from arch/x86/boot/compressed/string.c:11:
>> arch/x86/boot/compressed/../string.c:43:5: warning: no previous prototype for 'bcmp' [-Wmissing-prototypes]
43 | int bcmp(const void *s1, const void *s2, size_t len)
| ^~~~
>> arch/x86/boot/compressed/../string.c:146:6: warning: no previous prototype for 'simple_strtol' [-Wmissing-prototypes]
146 | long simple_strtol(const char *cp, char **endp, unsigned int base)
| ^~~~~~~~~~~~~
>> arch/x86/boot/compressed/string.c:53:7: warning: no previous prototype for 'memmove' [-Wmissing-prototypes]
53 | void *memmove(void *dest, const void *src, size_t n)
| ^~~~~~~
--
>> arch/x86/purgatory/purgatory.c:76:6: warning: no previous prototype for 'warn' [-Wmissing-prototypes]
76 | void warn(const char *msg) {}
| ^~~~

vim +/bcmp +43 arch/x86/boot/compressed/../string.c

fb4cac573ef6dc arch/x86/boot/string.c Vivek Goyal 2014-03-18 39
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 40 /*
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 41 * Clang may lower `memcmp == 0` to `bcmp == 0`.
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 42 */
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 @43 int bcmp(const void *s1, const void *s2, size_t len)
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 44 {
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 45 return memcmp(s1, s2, len);
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 46 }
4ce97317f41d38 arch/x86/boot/string.c Nick Desaulniers 2019-08-07 47
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 48 int strcmp(const char *str1, const char *str2)
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 49 {
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 50 const unsigned char *s1 = (const unsigned char *)str1;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 51 const unsigned char *s2 = (const unsigned char *)str2;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 52 int delta = 0;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 53
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 54 while (*s1 || *s2) {
1c1d046be69249 arch/x86/boot/string.c Arjun Sreedharan 2015-03-16 55 delta = *s1 - *s2;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 56 if (delta)
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 57 return delta;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 58 s1++;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 59 s2++;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 60 }
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 61 return 0;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 62 }
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 63
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 64 int strncmp(const char *cs, const char *ct, size_t count)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 65 {
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 66 unsigned char c1, c2;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 67
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 68 while (count) {
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 69 c1 = *cs++;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 70 c2 = *ct++;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 71 if (c1 != c2)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 72 return c1 < c2 ? -1 : 1;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 73 if (!c1)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 74 break;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 75 count--;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 76 }
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 77 return 0;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 78 }
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 79
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 80 size_t strnlen(const char *s, size_t maxlen)
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 81 {
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 82 const char *es = s;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 83 while (*es && maxlen) {
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 84 es++;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 85 maxlen--;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 86 }
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 87
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 88 return (es - s);
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 89 }
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 90
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 91 unsigned int atou(const char *s)
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 92 {
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 93 unsigned int i = 0;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 94 while (isdigit(*s))
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 95 i = i * 10 + (*s++ - '0');
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 96 return i;
5be86566151626 arch/i386/boot/string.c H. Peter Anvin 2007-07-11 97 }
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 98
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 99 /* Works only for digits and letters, but small and fast */
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 100 #define TOLOWER(x) ((x) | 0x20)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 101
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 102 static unsigned int simple_guess_base(const char *cp)
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 103 {
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 104 if (cp[0] == '0') {
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 105 if (TOLOWER(cp[1]) == 'x' && isxdigit(cp[2]))
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 106 return 16;
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 107 else
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 108 return 8;
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 109 } else {
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 110 return 10;
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 111 }
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 112 }
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 113
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 114 /**
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 115 * simple_strtoull - convert a string to an unsigned long long
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 116 * @cp: The start of the string
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 117 * @endp: A pointer to the end of the parsed string will be placed here
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 118 * @base: The number base to use
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 119 */
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 120
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 121 unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 122 {
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 123 unsigned long long result = 0;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 124
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 125 if (!base)
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 126 base = simple_guess_base(cp);
ce0aa5dd20e443 arch/x86/boot/string.c Yinghai Lu 2010-07-13 127
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 128 if (base == 16 && cp[0] == '0' && TOLOWER(cp[1]) == 'x')
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 129 cp += 2;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 130
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 131 while (isxdigit(*cp)) {
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 132 unsigned int value;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 133
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 134 value = isdigit(*cp) ? *cp - '0' : TOLOWER(*cp) - 'a' + 10;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 135 if (value >= base)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 136 break;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 137 result = result * base + value;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 138 cp++;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 139 }
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 140 if (endp)
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 141 *endp = (char *)cp;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 142
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 143 return result;
fa97bdf92709ad arch/x86/boot/string.c Pekka Enberg 2010-07-11 144 }
291f36325f9f25 arch/x86/boot/string.c Matt Fleming 2011-12-12 145
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 @146 long simple_strtol(const char *cp, char **endp, unsigned int base)
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 147 {
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 148 if (*cp == '-')
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 149 return -simple_strtoull(cp + 1, endp, base);
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 150
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 151 return simple_strtoull(cp, endp, base);
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 152 }
d52e7d5a952c5e arch/x86/boot/string.c Baoquan He 2017-05-13 153

:::::: The code at line 43 was first introduced by commit
:::::: 4ce97317f41d38584fb93578e922fcd19e535f5b x86/purgatory: Do not use __builtin_memcpy and __builtin_memset

:::::: TO: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
:::::: CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip