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
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel