On Tue, Jul 22, 2008 at 03:20:41PM -0400, Aaron M. Ucko wrote: > Package: user-mode-linux > Version: 2.6.25-1um-1 > Severity: serious > Tags: patch > Justification: no longer builds from source > > user-mode-linux fails to build on amd64 with the following error: > > | CC arch/um/sys-x86_64/ksyms.o > | arch/um/sys-x86_64/ksyms.c:16: error: '__memcpy' undeclared here (not in a > function) > | arch/um/sys-x86_64/ksyms.c:16: warning: type defaults to 'int' in > declaration of '__memcpy' > | make[2]: *** [arch/um/sys-x86_64/ksyms.o] Error 1 > | make[1]: *** [arch/um/sys-x86_64] Error 2 > > The problem is that arch/um/sys-x86_64/ksyms.c unconditionally tries > to export __memcpy even though include/asm-x86/string_64.h declares it > only for GCC 4.2 and older, newer versions presumably being smart > enough not to need it. I'm attaching a patch that conditionalizes the > EXPORT_SYMBOL call accordingly, and have confirmed that it allows the > build to complete without errors. (FTR, arch/um/os-Linux/user_syms.c > already exports memcpy itself, so ksyms.c need not do so in any case.) > > FWIW, you can find a full log illustrating the error at > http://buildd.debian.org/fetch.cgi?pkg=user-mode-linux;ver=2.6.25-1um-1;arch=amd64;stamp=1216481207 > > -- System Information: > Debian Release: lenny/sid > APT prefers unstable > APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable') > Architecture: amd64 (x86_64) > > Kernel: Linux 2.6.25.11 (SMP w/2 CPU cores) > Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) > Shell: /bin/sh linked to /bin/dash
> Index: linux-source-2.6.25/arch/um/sys-x86_64/ksyms.c > =================================================================== > --- linux-source-2.6.25.orig/arch/um/sys-x86_64/ksyms.c 2008-04-16 > 22:49:44.000000000 -0400 > +++ linux-source-2.6.25/arch/um/sys-x86_64/ksyms.c 2008-07-22 > 14:10:47.000000000 -0400 > @@ -13,4 +13,6 @@ > EXPORT_SYMBOL(__up_wakeup); > > /*XXX: we need them because they would be exported by x86_64 */ > +#if (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || __GNUC__ < 4 > EXPORT_SYMBOL(__memcpy); > +#endif current linux git uses a slightly different solution http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bfd04b974689f700bbd053ad6e66b0a95fb80c9 which is after all conditionally exports memcpy or __memcpy with the same logic as their definition. Will apply, and reupload later today. Thanks. -- mattia :wq! -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]