mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [esmil:visionfive 3/49] arch/riscv/lib/string.c:48: undefined reference to `_mcount'
@ 2022-07-05  0:24 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-07-05  0:24 UTC (permalink / raw)
  To: Matteo Croce; +Cc: kbuild-all, linux-kernel, Emil Renner Berthing

tree:   https://github.com/esmil/linux visionfive
head:   575362a88f9e6ef14a1a35eb7bd1593745cf019e
commit: 163ef6b6c194ae4d1f709053e4677687e6b87a27 [3/49] riscv: optimized memmove
config: riscv-buildonly-randconfig-r001-20220703 (https://download.01.org/0day-ci/archive/20220705/202207050825.5E6Jlwd8-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/esmil/linux/commit/163ef6b6c194ae4d1f709053e4677687e6b87a27
        git remote add esmil https://github.com/esmil/linux
        git fetch --no-tags esmil visionfive
        git checkout 163ef6b6c194ae4d1f709053e4677687e6b87a27
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   riscv64-linux-ld: arch/riscv/purgatory/purgatory.ro: in function `.L355':
   string.c:(.text+0x20e0): undefined reference to `_mcount'
   riscv64-linux-ld: arch/riscv/purgatory/purgatory.ro: in function `__memcpy':
>> arch/riscv/lib/string.c:48: undefined reference to `_mcount'


vim +48 arch/riscv/lib/string.c

6a48862f530a59 Matteo Croce 2021-09-29  30  
6a48862f530a59 Matteo Croce 2021-09-29  31  void *__memcpy(void *dest, const void *src, size_t count)
6a48862f530a59 Matteo Croce 2021-09-29  32  {
6a48862f530a59 Matteo Croce 2021-09-29  33  	union const_types s = { .as_u8 = src };
6a48862f530a59 Matteo Croce 2021-09-29  34  	union types d = { .as_u8 = dest };
6a48862f530a59 Matteo Croce 2021-09-29  35  	int distance = 0;
6a48862f530a59 Matteo Croce 2021-09-29  36  
6a48862f530a59 Matteo Croce 2021-09-29  37  	if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) {
6a48862f530a59 Matteo Croce 2021-09-29  38  		if (count < MIN_THRESHOLD)
6a48862f530a59 Matteo Croce 2021-09-29  39  			goto copy_remainder;
6a48862f530a59 Matteo Croce 2021-09-29  40  
6a48862f530a59 Matteo Croce 2021-09-29  41  		/* Copy a byte at time until destination is aligned. */
6a48862f530a59 Matteo Croce 2021-09-29  42  		for (; d.as_uptr & WORD_MASK; count--)
6a48862f530a59 Matteo Croce 2021-09-29  43  			*d.as_u8++ = *s.as_u8++;
6a48862f530a59 Matteo Croce 2021-09-29  44  
6a48862f530a59 Matteo Croce 2021-09-29  45  		distance = s.as_uptr & WORD_MASK;
6a48862f530a59 Matteo Croce 2021-09-29  46  	}
6a48862f530a59 Matteo Croce 2021-09-29  47  
6a48862f530a59 Matteo Croce 2021-09-29 @48  	if (distance) {
6a48862f530a59 Matteo Croce 2021-09-29  49  		unsigned long last, next;
6a48862f530a59 Matteo Croce 2021-09-29  50  
6a48862f530a59 Matteo Croce 2021-09-29  51  		/*
6a48862f530a59 Matteo Croce 2021-09-29  52  		 * s is distance bytes ahead of d, and d just reached
6a48862f530a59 Matteo Croce 2021-09-29  53  		 * the alignment boundary. Move s backward to word align it
6a48862f530a59 Matteo Croce 2021-09-29  54  		 * and shift data to compensate for distance, in order to do
6a48862f530a59 Matteo Croce 2021-09-29  55  		 * word-by-word copy.
6a48862f530a59 Matteo Croce 2021-09-29  56  		 */
6a48862f530a59 Matteo Croce 2021-09-29  57  		s.as_u8 -= distance;
6a48862f530a59 Matteo Croce 2021-09-29  58  
6a48862f530a59 Matteo Croce 2021-09-29  59  		next = s.as_ulong[0];
6a48862f530a59 Matteo Croce 2021-09-29  60  		for (; count >= BYTES_LONG; count -= BYTES_LONG) {
6a48862f530a59 Matteo Croce 2021-09-29  61  			last = next;
6a48862f530a59 Matteo Croce 2021-09-29  62  			next = s.as_ulong[1];
6a48862f530a59 Matteo Croce 2021-09-29  63  
6a48862f530a59 Matteo Croce 2021-09-29  64  			d.as_ulong[0] = last >> (distance * 8) |
6a48862f530a59 Matteo Croce 2021-09-29  65  					next << ((BYTES_LONG - distance) * 8);
6a48862f530a59 Matteo Croce 2021-09-29  66  
6a48862f530a59 Matteo Croce 2021-09-29  67  			d.as_ulong++;
6a48862f530a59 Matteo Croce 2021-09-29  68  			s.as_ulong++;
6a48862f530a59 Matteo Croce 2021-09-29  69  		}
6a48862f530a59 Matteo Croce 2021-09-29  70  
6a48862f530a59 Matteo Croce 2021-09-29  71  		/* Restore s with the original offset. */
6a48862f530a59 Matteo Croce 2021-09-29  72  		s.as_u8 += distance;
6a48862f530a59 Matteo Croce 2021-09-29  73  	} else {
6a48862f530a59 Matteo Croce 2021-09-29  74  		/*
6a48862f530a59 Matteo Croce 2021-09-29  75  		 * If the source and dest lower bits are the same, do a simple
6a48862f530a59 Matteo Croce 2021-09-29  76  		 * 32/64 bit wide copy.
6a48862f530a59 Matteo Croce 2021-09-29  77  		 */
6a48862f530a59 Matteo Croce 2021-09-29  78  		for (; count >= BYTES_LONG; count -= BYTES_LONG)
6a48862f530a59 Matteo Croce 2021-09-29  79  			*d.as_ulong++ = *s.as_ulong++;
6a48862f530a59 Matteo Croce 2021-09-29  80  	}
6a48862f530a59 Matteo Croce 2021-09-29  81  
6a48862f530a59 Matteo Croce 2021-09-29  82  copy_remainder:
6a48862f530a59 Matteo Croce 2021-09-29  83  	while (count--)
6a48862f530a59 Matteo Croce 2021-09-29  84  		*d.as_u8++ = *s.as_u8++;
6a48862f530a59 Matteo Croce 2021-09-29  85  
6a48862f530a59 Matteo Croce 2021-09-29  86  	return dest;
6a48862f530a59 Matteo Croce 2021-09-29  87  }
6a48862f530a59 Matteo Croce 2021-09-29  88  EXPORT_SYMBOL(__memcpy);
6a48862f530a59 Matteo Croce 2021-09-29  89  

:::::: The code at line 48 was first introduced by commit
:::::: 6a48862f530a593cadaab50ae4006b3a70a112e6 riscv: optimized memcpy

:::::: TO: Matteo Croce <mcroce@microsoft.com>
:::::: CC: Emil Renner Berthing <emil.renner.berthing@canonical.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-05  0:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-05  0:24 [esmil:visionfive 3/49] arch/riscv/lib/string.c:48: undefined reference to `_mcount' kernel test robot

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®