On Wed, Dec 26, 2007 at 02:26:09PM -0800, Quantum Skyline wrote: > Hi, > > I've been trying to modify the UML makefiles in the 2.6.23.9 kernel to > compile against a different C library, but I'm running into trouble > getting parts of UML to compile with GCC 4.2.1. In particular, files in > os-Linux that use functions like __uml_setup are causing GCC to throw > errors. > > For example, when I try to compile arch/um/os-Linux/aio.c in my > environment, I get the following: > > gcc-4.2.1-rev -Wp,-MD,arch/um/os-Linux/.aio.o.d -Wall -Wundef > -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common > -Werror-implicit-function-declaration -Os -D__arch_um__ > -DSUBARCH=\"i386\" -Dvmap=kernel_vmap > -Din6addr_loopback=kernel_in6addr_loopback > -Din6addr_any=kernel_in6addr_any -march=i686 > I know that __uml_setup and friends are defined in > arch/um/include/init.h and it is being included, but it seems like GCC > is not using it. If I comment out __uml_setup, other files which have > functions starting with two underscores like __uml_initcall also cause > compilation to fail. > > Can anyone give some hints to solve this problem?
Probably you need the patch below. Jeff -- Work email - jdike at linux dot intel dot com From: Jeff Dike <[EMAIL PROTECTED]> init.h started breaking now for some reason. It turns out that there wasn't a definition of __used. Fixed this by copying the relevant stuff from compiler.h in the userspace case, and including compiler.h in the kernel case. Signed-off-by: Jeff Dike <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> --- arch/um/include/init.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff -puN arch/um/include/init.h~uml-arch-um-include-inith-needs-a-definition-of-__used arch/um/include/init.h --- a/arch/um/include/init.h~uml-arch-um-include-inith-needs-a-definition-of-__used +++ a/arch/um/include/init.h @@ -40,6 +40,15 @@ typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); +#ifndef __KERNEL__ +#if __GNUC_MINOR__ >= 3 +# define __used __attribute__((__used__)) +#else +# define __used __attribute__((__unused__)) +#endif +#else +#include <linux/compiler.h> +#endif /* These are for everybody (although not all archs will actually discard it in modules) */ #define __init __attribute__ ((__section__ (".init.text"))) _ ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel