qemu-native:fix do_compile failed on SLED 11.2
1, When build qemu-native on SLED 11.2, there is an error: ... | In file included from /usr/include/bits/sigcontext.h:28, | from /usr/include/signal.h:339, | from /buildarea2/tmp/work/i686-linux/qemu-native/1.4.0-r0/ qemu-1.4.0/include/qemu-common.h:42, | from fsdev/virtfs-proxy-helper.c:23: | /usr/include/asm/sigcontext.h:28: error: expected specifier- qualifier-list before '__u64' | /usr/include/asm/sigcontext.h:191: error: expected specifier- qualifier-list before '__u64' ... 2, The virtfs-proxy-helper.c includes <sys/capability.h> and qemu-common.h in sequence. The header include map is: (`-->' presents `include') ... "virtfs-proxy-helper.c" --> <sys/capability.h> ... "virtfs-proxy-helper.c" --> "qemu-common.h" --> <signal.h> --> <bits/sigcontext.h> --> <asm/sigcontext.h> --> <linux/types.h> --> <asm/types.h> --> <asm-generic/types.h> --> <asm-generic/int-ll64.h> ... 3, The bug is found on SLED 11.2 x86. In libcap header file /usr/include/sys/capability.h, it does evil stuff like this: ... 25 /* 26 * Make sure we can be included from userland by preventing 27 * capability.h from including other kernel headers 28 */ 29 #define _LINUX_TYPES_H 30 #define _LINUX_FS_H 31 #define __LINUX_COMPILER_H 32 #define __user 33 34 typedef unsigned int __u32; 35 typedef __u32 __le32; ... This completely prevents including /usr/include/linux/types.h. The above `<asm/sigcontext.h> --> <linux/types.h>' is prevented, and '__u64' is defined in <asm-generic/int-ll64.h>. 4, Modify virtfs-proxy-helper.c to include <sys/capability.h> last to workaround the issue. http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html http://patchwork.linuxtv.org/patch/12748/ [YOCTO #4001] (From OE-Core rev: 1267bb2fd91f205d35e805aa019d25ab7a921b14) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
bc7bbe9df7
commit
e609afe4d7
|
@ -0,0 +1,84 @@
|
|||
fix libcap header issue on some distro
|
||||
|
||||
1, When build qemu-native on SLED 11.2, there is an error:
|
||||
...
|
||||
| In file included from /usr/include/bits/sigcontext.h:28,
|
||||
| from /usr/include/signal.h:339,
|
||||
| from /buildarea2/tmp/work/i686-linux/qemu-native/1.4.0-r0/
|
||||
qemu-1.4.0/include/qemu-common.h:42,
|
||||
| from fsdev/virtfs-proxy-helper.c:23:
|
||||
| /usr/include/asm/sigcontext.h:28: error: expected specifier-
|
||||
qualifier-list before '__u64'
|
||||
| /usr/include/asm/sigcontext.h:191: error: expected specifier-
|
||||
qualifier-list before '__u64'
|
||||
...
|
||||
|
||||
2, The virtfs-proxy-helper.c includes <sys/capability.h> and
|
||||
qemu-common.h in sequence. The header include map is:
|
||||
(`-->' presents `include')
|
||||
...
|
||||
"virtfs-proxy-helper.c" --> <sys/capability.h>
|
||||
...
|
||||
"virtfs-proxy-helper.c" --> "qemu-common.h" --> <signal.h> -->
|
||||
<bits/sigcontext.h> --> <asm/sigcontext.h> --> <linux/types.h> -->
|
||||
<asm/types.h> --> <asm-generic/types.h> --> <asm-generic/int-ll64.h>
|
||||
...
|
||||
|
||||
3, The bug is found on SLED 11.2 x86. In libcap header file
|
||||
/usr/include/sys/capability.h, it does evil stuff like this:
|
||||
...
|
||||
25 /*
|
||||
26 * Make sure we can be included from userland by preventing
|
||||
27 * capability.h from including other kernel headers
|
||||
28 */
|
||||
29 #define _LINUX_TYPES_H
|
||||
30 #define _LINUX_FS_H
|
||||
31 #define __LINUX_COMPILER_H
|
||||
32 #define __user
|
||||
33
|
||||
34 typedef unsigned int __u32;
|
||||
35 typedef __u32 __le32;
|
||||
...
|
||||
This completely prevents including /usr/include/linux/types.h.
|
||||
The above `<asm/sigcontext.h> --> <linux/types.h>' is prevented,
|
||||
and '__u64' is defined in <asm-generic/int-ll64.h>.
|
||||
|
||||
4, Modify virtfs-proxy-helper.c to include <sys/capability.h>
|
||||
last to workaround the issue.
|
||||
|
||||
http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
|
||||
http://patchwork.linuxtv.org/patch/12748/
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
---
|
||||
fsdev/virtfs-proxy-helper.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
|
||||
--- a/fsdev/virtfs-proxy-helper.c
|
||||
+++ b/fsdev/virtfs-proxy-helper.c
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <sys/resource.h>
|
||||
#include <getopt.h>
|
||||
#include <syslog.h>
|
||||
-#include <sys/capability.h>
|
||||
#include <sys/fsuid.h>
|
||||
#include <sys/vfs.h>
|
||||
#include <sys/ioctl.h>
|
||||
@@ -26,7 +25,11 @@
|
||||
#include "virtio-9p-marshal.h"
|
||||
#include "hw/9pfs/virtio-9p-proxy.h"
|
||||
#include "fsdev/virtio-9p-marshal.h"
|
||||
-
|
||||
+/*
|
||||
+ * Include this one last due to some versions of it being buggy:
|
||||
+ * http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
|
||||
+ */
|
||||
+#include <sys/capability.h>
|
||||
#define PROGNAME "virtfs-proxy-helper"
|
||||
|
||||
#ifndef XFS_SUPER_MAGIC
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -32,6 +32,10 @@ SRC_URI_append_class-nativesdk = "\
|
|||
file://relocatable_sdk.patch \
|
||||
"
|
||||
|
||||
SRC_URI_append_class-native = "\
|
||||
file://fix-libcap-header-issue-on-some-distro.patch \
|
||||
"
|
||||
|
||||
EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls --audio-drv-list=oss,alsa --audio-card-list=ac97,es1370 ${SDL} --disable-curl --disable-vnc-jpeg --disable-bluez --with-system-pixman"
|
||||
|
||||
EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls \
|
||||
|
|
Loading…
Reference in New Issue