More linux-user build issues on ppc
This commit is contained in:
parent
d298fd0ca4
commit
081ecc8f54
138
qemu-fix-linux-user-build-on-ppc.patch
Normal file
138
qemu-fix-linux-user-build-on-ppc.patch
Normal file
@ -0,0 +1,138 @@
|
||||
From 8da41d2477abdafbbc484a12fd74f2d54336188b Mon Sep 17 00:00:00 2001
|
||||
From: Mark McLoughlin <markmc@redhat.com>
|
||||
Date: Mon, 29 Jun 2009 14:49:03 +0100
|
||||
Subject: [PATCH] Fix linux-user build on ppc
|
||||
|
||||
kvm-87 build fails on ppc:
|
||||
|
||||
https://koji.fedoraproject.org/koji/getfile?taskID=1441042&name=build.log
|
||||
|
||||
gcc -I. -I.. -I/builddir/build/BUILD/qemu-kvm-devel-87/target-i386
|
||||
-I/builddir/build/BUILD/qemu-kvm-devel-87 -MMD -MT elfload.o -MP
|
||||
-DNEED_CPU_H -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
|
||||
-D__user= -I/builddir/build/BUILD/qemu-kvm-devel-87/tcg
|
||||
-I/builddir/build/BUILD/qemu-kvm-devel-87/tcg/ppc64
|
||||
-I/builddir/build/BUILD/qemu-kvm-devel-87/fpu
|
||||
-I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user
|
||||
-I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/i386 -O2 -g -pipe
|
||||
-Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
|
||||
--param=ssp-buffer-size=4 -m64 -mminimal-toc -g -fno-strict-aliasing
|
||||
-O2 -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes
|
||||
-Wstrict-prototypes -Wredundant-decls -c -o elfload.o
|
||||
/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c
|
||||
/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:214: error: conflicting types for 'elf_greg_t'
|
||||
/usr/include/asm/elf.h:123: note: previous declaration of 'elf_greg_t' was here
|
||||
/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:220: error: conflicting types for 'elf_gregset_t'
|
||||
/usr/include/asm/elf.h:124: note: previous declaration of 'elf_gregset_t' was here
|
||||
In file included from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:697:
|
||||
../elf.h:457:1: warning: "R_PPC_NUM" redefined
|
||||
In file included from /usr/include/asm/sigcontext.h:13,
|
||||
from /usr/include/bits/sigcontext.h:28,
|
||||
from /usr/include/signal.h:339,
|
||||
from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/qemu.h:4,
|
||||
from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:16:
|
||||
/usr/include/asm/elf.h:81:1: warning: this is the location of the previous definition
|
||||
|
||||
Problem seems to be that signal.h is pulling in a bunch of ppc
|
||||
headers which expose elf_greg_t, R_PPC_* and PPC_FEATURE_*.
|
||||
|
||||
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
|
||||
|
||||
More linux-user on ppc build fixes
|
||||
|
||||
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
|
||||
---
|
||||
elf.h | 2 ++
|
||||
linux-user/elfload.c | 10 ++++++++++
|
||||
2 files changed, 12 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/elf.h b/elf.h
|
||||
index b042002..14f8aa1 100644
|
||||
--- a/elf.h
|
||||
+++ b/elf.h
|
||||
@@ -454,7 +454,9 @@ typedef struct {
|
||||
#define R_PPC_SECTOFF_HI 35
|
||||
#define R_PPC_SECTOFF_HA 36
|
||||
/* Keep this the last entry. */
|
||||
+#ifndef R_PPC_NUM
|
||||
#define R_PPC_NUM 37
|
||||
+#endif /* R_PPC_NUM */
|
||||
|
||||
/* ARM specific declarations */
|
||||
|
||||
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
|
||||
index d31cca7..3ccfdda 100644
|
||||
--- a/linux-user/elfload.c
|
||||
+++ b/linux-user/elfload.c
|
||||
@@ -134,6 +134,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||
regs->rip = infop->entry;
|
||||
}
|
||||
|
||||
+#ifdef FIX_BROKEN_PPC_BUILD
|
||||
typedef target_ulong elf_greg_t;
|
||||
typedef uint32_t target_uid_t;
|
||||
typedef uint32_t target_gid_t;
|
||||
@@ -179,6 +180,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
||||
(*regs)[25] = env->segs[R_FS].selector & 0xffff;
|
||||
(*regs)[26] = env->segs[R_GS].selector & 0xffff;
|
||||
}
|
||||
+#endif /* FIX_BROKEN_PPC_BUILD */
|
||||
|
||||
#else
|
||||
|
||||
@@ -211,6 +213,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||
regs->edx = 0;
|
||||
}
|
||||
|
||||
+#ifdef FIX_BROKEN_PPC_BUILD
|
||||
typedef target_ulong elf_greg_t;
|
||||
typedef uint16_t target_uid_t;
|
||||
typedef uint16_t target_gid_t;
|
||||
@@ -246,9 +249,12 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
||||
(*regs)[15] = env->regs[R_ESP];
|
||||
(*regs)[16] = env->segs[R_SS].selector & 0xffff;
|
||||
}
|
||||
+#endif /* FIX_BROKEN_PPC_BUILD */
|
||||
#endif
|
||||
|
||||
+#ifdef FIX_BROKEN_PPC_BUILD
|
||||
#define USE_ELF_CORE_DUMP
|
||||
+#endif /* FIX_BROKEN_PPC_BUILD */
|
||||
#define ELF_EXEC_PAGESIZE 4096
|
||||
|
||||
#endif
|
||||
@@ -286,6 +292,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||
regs->ARM_r10 = infop->start_data;
|
||||
}
|
||||
|
||||
+#ifdef FIX_BROKEN_PPC_BUILD
|
||||
typedef uint32_t elf_greg_t;
|
||||
typedef uint16_t target_uid_t;
|
||||
typedef uint16_t target_gid_t;
|
||||
@@ -318,6 +325,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
||||
}
|
||||
|
||||
#define USE_ELF_CORE_DUMP
|
||||
+#endif /* FIX_BROKEN_PPC_BUILD */
|
||||
#define ELF_EXEC_PAGESIZE 4096
|
||||
|
||||
enum
|
||||
@@ -421,6 +429,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||
|
||||
/* Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP).
|
||||
See arch/powerpc/include/asm/cputable.h. */
|
||||
+#ifndef PPC_FEATURE_32
|
||||
enum {
|
||||
PPC_FEATURE_32 = 0x80000000,
|
||||
PPC_FEATURE_64 = 0x40000000,
|
||||
@@ -452,6 +461,7 @@ enum {
|
||||
PPC_FEATURE_TRUE_LE = 0x00000002,
|
||||
PPC_FEATURE_PPC_LE = 0x00000001,
|
||||
};
|
||||
+#endif /* !defined(PPC_FEATURE_32) */
|
||||
|
||||
#define ELF_HWCAP get_elf_hwcap()
|
||||
|
||||
--
|
||||
1.6.2.5
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 71f761fc6f6289c47fb31ed1ba192f813fb39c58 Mon Sep 17 00:00:00 2001
|
||||
From 85da3db92e4b25275426e252974db7eae18e2bb1 Mon Sep 17 00:00:00 2001
|
||||
From: Mark McLoughlin <markmc@redhat.com>
|
||||
Date: Mon, 29 Jun 2009 16:09:45 +0100
|
||||
Subject: [PATCH] Fix pcspk build with kvm disabled
|
||||
|
@ -1,97 +0,0 @@
|
||||
From 398e45e57ee98e9d1a7387816b53d7038d1c3283 Mon Sep 17 00:00:00 2001
|
||||
From: Anthony Liguori <aliguori@us.ibm.com>
|
||||
Date: Wed, 24 Jun 2009 14:25:15 -0500
|
||||
Subject: [PATCH] Fix ppc-softmmu kvm-disabled build
|
||||
|
||||
This gets ppc-softmmu building when KVM is not enabled. It may be enough to get
|
||||
it working with KVM enabled but I haven't checked.
|
||||
|
||||
(cherry picked from commit 9011bae8e2101095aae53f1f1553ca3e72919f9b)
|
||||
|
||||
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
||||
Signed-off-by: Avi Kivity <avi@redhat.com>
|
||||
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
|
||||
---
|
||||
hw/ppc440.c | 1 +
|
||||
hw/ppc440_bamboo.c | 1 +
|
||||
hw/ppce500_mpc8544ds.c | 1 +
|
||||
qemu-kvm.h | 1 +
|
||||
target-ppc/helper.c | 1 +
|
||||
target-ppc/machine.c | 1 +
|
||||
6 files changed, 6 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/hw/ppc440.c b/hw/ppc440.c
|
||||
index 00d82e4..c2c9e65 100644
|
||||
--- a/hw/ppc440.c
|
||||
+++ b/hw/ppc440.c
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "ppc405.h"
|
||||
#include "sysemu.h"
|
||||
#include "kvm.h"
|
||||
+#include "qemu-kvm.h"
|
||||
|
||||
#define PPC440EP_PCI_CONFIG 0xeec00000
|
||||
#define PPC440EP_PCI_INTACK 0xeed00000
|
||||
diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
|
||||
index 00aa2c7..e4aad39 100644
|
||||
--- a/hw/ppc440_bamboo.c
|
||||
+++ b/hw/ppc440_bamboo.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "kvm.h"
|
||||
#include "kvm_ppc.h"
|
||||
#include "device_tree.h"
|
||||
+#include "qemu-kvm.h"
|
||||
|
||||
#define BINARY_DEVICE_TREE_FILE "bamboo.dtb"
|
||||
|
||||
diff --git a/hw/ppce500_mpc8544ds.c b/hw/ppce500_mpc8544ds.c
|
||||
index d9ed36c..1099b99 100644
|
||||
--- a/hw/ppce500_mpc8544ds.c
|
||||
+++ b/hw/ppce500_mpc8544ds.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "device_tree.h"
|
||||
#include "openpic.h"
|
||||
#include "ppce500.h"
|
||||
+#include "qemu-kvm.h"
|
||||
|
||||
#define BINARY_DEVICE_TREE_FILE "mpc8544ds.dtb"
|
||||
#define UIMAGE_LOAD_BASE 0
|
||||
diff --git a/qemu-kvm.h b/qemu-kvm.h
|
||||
index 68a5b40..9341d0c 100644
|
||||
--- a/qemu-kvm.h
|
||||
+++ b/qemu-kvm.h
|
||||
@@ -169,6 +169,7 @@ int kvm_has_sync_mmu(void);
|
||||
void kvm_init_vcpu(CPUState *env);
|
||||
void kvm_load_tsc(CPUState *env);
|
||||
#else
|
||||
+#define kvm_has_sync_mmu() (0)
|
||||
#define kvm_enabled() (0)
|
||||
#define kvm_nested 0
|
||||
#define qemu_kvm_irqchip_in_kernel() (0)
|
||||
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
|
||||
index 5a7a935..3629c99 100644
|
||||
--- a/target-ppc/helper.c
|
||||
+++ b/target-ppc/helper.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "helper_regs.h"
|
||||
#include "qemu-common.h"
|
||||
#include "kvm.h"
|
||||
+#include "qemu-kvm.h"
|
||||
|
||||
//#define DEBUG_MMU
|
||||
//#define DEBUG_BATS
|
||||
diff --git a/target-ppc/machine.c b/target-ppc/machine.c
|
||||
index 99ba3eb..ec8e197 100644
|
||||
--- a/target-ppc/machine.c
|
||||
+++ b/target-ppc/machine.c
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "hw/hw.h"
|
||||
#include "hw/boards.h"
|
||||
#include "kvm.h"
|
||||
+#include "qemu-kvm.h"
|
||||
|
||||
void cpu_save(QEMUFile *f, void *opaque)
|
||||
{
|
||||
--
|
||||
1.6.2.5
|
||||
|
@ -19,8 +19,8 @@ Source2: kvm.modules
|
||||
# Not upstream, why?
|
||||
Patch01: qemu-bios-bigger-roms.patch
|
||||
|
||||
# Fixes ppc-softmmu target build, cherry-picked from upstream
|
||||
Patch02: qemu-fix-ppc-softmmu-kvm-disabled-build.patch
|
||||
# Fixes linux-user build on ppc
|
||||
Patch02: qemu-fix-linux-user-build-on-ppc.patch
|
||||
|
||||
# Works around broken linux-user build on ppc
|
||||
Patch03: qemu-fix-broken-elf-coredump-build-on-ppc.patch
|
||||
|
Loading…
Reference in New Issue
Block a user