[OpenAFS-devel] Symbol memcpy not found?

Jeffrey Hutzelman jhutz@cmu.edu
Wed, 13 Dec 2000 21:59:11 -0800 (PST)


On 14 Dec 2000, Derek Atkins wrote:

> The linux code should provide memcpy().  At least under Linux/x86 it
> is provided from <asm/string.h>.  I don't know where it would be on
> the 390, but I would check out the Linux include files to see where
> you might be able to find it.  It's going to be there, somewhere.

Since Derek pointed out to me that these things are often provided
as macros in asm/string.h, I went and looked at the s390 code in 2.2.17.

asm-s390/string.h defines __HAVE_ARCH_* for 8 symbols:

memchr, strcpy, strlen, and strcat are in include/asm-s390/string.h
memset, strcmp, and strncpy are in assembly files in arch/s390/lib/

As it turns out, memcpy is defined in neither of those places, despite
the fact that __HAVE_ARCH_MEMCPY is defined.  So, you are going to lose
with that kernel.  The simplest solution is probably to edit
include/asm-s390/string.h and change

#define __HAVE_ARCH_MEMCPY

to

#undef __HAVE_ARCH_MEMCPY

and rebuild the kernel.

If you don't want to rebuild, you could instead edit that same file
and add

#define memcpy(a,b,c) bcopy(b,a,c)

then rebuild OpenAFS.


Good luck...

-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA