From 9619122a37468984c812d1409a86a423d5934e08 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 28 Sep 2015 12:22:35 +0000 Subject: uml: backport another upstream patch to fix compile errors Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47067 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...001-um-Remove-copy-paste-code-from-init.h.patch | 44 ---------- .../001-um-Stop-abusing-__KERNEL__.patch | 94 ++++++++++++++++++++++ ...002-um-Remove-copy-paste-code-from-init.h.patch | 44 ++++++++++ 3 files changed, 138 insertions(+), 44 deletions(-) delete mode 100644 target/linux/uml/patches-4.1/001-um-Remove-copy-paste-code-from-init.h.patch create mode 100644 target/linux/uml/patches-4.1/001-um-Stop-abusing-__KERNEL__.patch create mode 100644 target/linux/uml/patches-4.1/002-um-Remove-copy-paste-code-from-init.h.patch (limited to 'target/linux/uml') diff --git a/target/linux/uml/patches-4.1/001-um-Remove-copy-paste-code-from-init.h.patch b/target/linux/uml/patches-4.1/001-um-Remove-copy-paste-code-from-init.h.patch deleted file mode 100644 index a68c4b606c..0000000000 --- a/target/linux/uml/patches-4.1/001-um-Remove-copy-paste-code-from-init.h.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Richard Weinberger -Date: Sun, 31 May 2015 22:15:58 +0200 -Subject: [PATCH] um: Remove copy&paste code from init.h - -As we got rid of the __KERNEL__ abuse, we can directly -include linux/compiler.h now. -This also allows gcc 5 to build UML. - -Reported-by: Hans-Werner Hilse -Signed-off-by: Richard Weinberger ---- - ---- a/arch/um/include/shared/init.h -+++ b/arch/um/include/shared/init.h -@@ -40,28 +40,8 @@ - typedef int (*initcall_t)(void); - typedef void (*exitcall_t)(void); - --#ifndef __KERNEL__ --#ifndef __section --# define __section(S) __attribute__ ((__section__(#S))) --#endif -- --#if __GNUC__ == 3 -- --#if __GNUC_MINOR__ >= 3 --# define __used __attribute__((__used__)) --#else --# define __used __attribute__((__unused__)) --#endif -- --#else --#if __GNUC__ == 4 --# define __used __attribute__((__used__)) --#endif --#endif -- --#else - #include --#endif -+ - /* These are for everybody (although not all archs will actually - discard it in modules) */ - #define __init __section(.init.text) diff --git a/target/linux/uml/patches-4.1/001-um-Stop-abusing-__KERNEL__.patch b/target/linux/uml/patches-4.1/001-um-Stop-abusing-__KERNEL__.patch new file mode 100644 index 0000000000..a46a5be406 --- /dev/null +++ b/target/linux/uml/patches-4.1/001-um-Stop-abusing-__KERNEL__.patch @@ -0,0 +1,94 @@ +From: Richard Weinberger +Date: Sun, 31 May 2015 19:50:57 +0200 +Subject: [PATCH] um: Stop abusing __KERNEL__ + +Currently UML is abusing __KERNEL__ to distinguish between +kernel and host code (os-Linux). It is better to use a custom +define such that existing users of __KERNEL__ don't get confused. + +Signed-off-by: Richard Weinberger +--- + +--- a/arch/um/drivers/mconsole.h ++++ b/arch/um/drivers/mconsole.h +@@ -7,7 +7,7 @@ + #ifndef __MCONSOLE_H__ + #define __MCONSOLE_H__ + +-#ifndef __KERNEL__ ++#ifdef __UM_HOST__ + #include + #define u32 uint32_t + #endif +--- a/arch/um/include/shared/init.h ++++ b/arch/um/include/shared/init.h +@@ -40,7 +40,7 @@ + typedef int (*initcall_t)(void); + typedef void (*exitcall_t)(void); + +-#ifndef __KERNEL__ ++#ifdef __UM_HOST__ + #ifndef __section + # define __section(S) __attribute__ ((__section__(#S))) + #endif +@@ -131,7 +131,7 @@ extern struct uml_param __uml_setup_star + #define __uml_postsetup_call __used __section(.uml.postsetup.init) + #define __uml_exit_call __used __section(.uml.exitcall.exit) + +-#ifndef __KERNEL__ ++#ifdef __UM_HOST__ + + #define __define_initcall(level,fn) \ + static initcall_t __initcall_##fn __used \ +--- a/arch/um/include/shared/user.h ++++ b/arch/um/include/shared/user.h +@@ -17,7 +17,7 @@ + #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + + /* This is to get size_t */ +-#ifdef __KERNEL__ ++#ifndef __UM_HOST__ + #include + #else + #include +--- a/arch/um/Makefile ++++ b/arch/um/Makefile +@@ -68,9 +68,10 @@ KBUILD_CFLAGS += $(CFLAGS) $(CFLAGS-y) - + + KBUILD_AFLAGS += $(ARCH_INCLUDE) + +-USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\ +- $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \ +- $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64 -idirafter include ++USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \ ++ $(ARCH_INCLUDE) $(MODE_INCLUDE) $(filter -I%,$(CFLAGS)) \ ++ -D_FILE_OFFSET_BITS=64 -idirafter include \ ++ -D__KERNEL__ -D__UM_HOST__ + + #This will adjust *FLAGS accordingly to the platform. + include $(ARCH_DIR)/Makefile-os-$(OS) +--- a/arch/x86/um/shared/sysdep/tls.h ++++ b/arch/x86/um/shared/sysdep/tls.h +@@ -1,7 +1,7 @@ + #ifndef _SYSDEP_TLS_H + #define _SYSDEP_TLS_H + +-# ifndef __KERNEL__ ++#ifdef __UM_HOST__ + + /* Change name to avoid conflicts with the original one from , which + * may be named user_desc (but in 2.4 and in header matching its API was named +@@ -22,11 +22,11 @@ typedef struct um_dup_user_desc { + #endif + } user_desc_t; + +-# else /* __KERNEL__ */ ++#else /* __UM_HOST__ */ + + typedef struct user_desc user_desc_t; + +-# endif /* __KERNEL__ */ ++#endif /* __UM_HOST__ */ + + extern int os_set_thread_area(user_desc_t *info, int pid); + extern int os_get_thread_area(user_desc_t *info, int pid); diff --git a/target/linux/uml/patches-4.1/002-um-Remove-copy-paste-code-from-init.h.patch b/target/linux/uml/patches-4.1/002-um-Remove-copy-paste-code-from-init.h.patch new file mode 100644 index 0000000000..6733384b91 --- /dev/null +++ b/target/linux/uml/patches-4.1/002-um-Remove-copy-paste-code-from-init.h.patch @@ -0,0 +1,44 @@ +From: Richard Weinberger +Date: Sun, 31 May 2015 22:15:58 +0200 +Subject: [PATCH] um: Remove copy&paste code from init.h + +As we got rid of the __KERNEL__ abuse, we can directly +include linux/compiler.h now. +This also allows gcc 5 to build UML. + +Reported-by: Hans-Werner Hilse +Signed-off-by: Richard Weinberger +--- + +--- a/arch/um/include/shared/init.h ++++ b/arch/um/include/shared/init.h +@@ -40,28 +40,8 @@ + typedef int (*initcall_t)(void); + typedef void (*exitcall_t)(void); + +-#ifdef __UM_HOST__ +-#ifndef __section +-# define __section(S) __attribute__ ((__section__(#S))) +-#endif +- +-#if __GNUC__ == 3 +- +-#if __GNUC_MINOR__ >= 3 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#else +-#if __GNUC__ == 4 +-# define __used __attribute__((__used__)) +-#endif +-#endif +- +-#else + #include +-#endif ++ + /* These are for everybody (although not all archs will actually + discard it in modules) */ + #define __init __section(.init.text) -- cgit v1.2.3