I was trying to get xen-4.0.0 and xen-4.0.1-rc4 to build for Fedora 14
which is now using gcc 4.5 and found I needed the patches below
Signed-off-by: Michael Young <m.a.young@xxxxxxxxxxxx>
(though I don't think the second patch (of netfront.c) is original enough
for me to claim any credit)
Linking of xen-4.0.1/xen/.xen-syms.0 fails for gcc 4.5 with the errors
/builddir/build/BUILD/xen-4.0.1/xen/drivers/built_in.o: In function
`pt_irq_time_out':
/builddir/build/BUILD/xen-4.0.1/xen/drivers/passthrough/io.c:83: undefined
reference to `_Unwind_Resume'
/builddir/build/BUILD/xen-4.0.1/xen/drivers/passthrough/io.c:83:
relocation truncated to fit: R_X86_64_PLT32 against undefined symbol
`_Unwind_Resume'
/builddir/build/BUILD/xen-4.0.1/xen/drivers/built_in.o:(.data.DW.ref.__gcc_personality_v0[DW.ref.__gcc_personality_v0]+0x0):
undefined reference to `__gcc_personality_v0'
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/built_in.o: In function
`paging_log_dirty_range':
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/mm/paging.c:603: undefined
reference to `_Unwind_Resume'
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/mm/paging.c:603: relocation
truncated to fit: R_X86_64_PLT32 against undefined symbol `_Unwind_Resume'
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/built_in.o: In function
`p2m_pod_zero_check':
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/mm/p2m.c:967: undefined
reference to `_Unwind_Resume'
/builddir/build/BUILD/xen-4.0.1/xen/arch/x86/mm/p2m.c:967: relocation
truncated to fit: R_X86_64_PLT32 against undefined symbol `_Unwind_Resume'
if -fexceptions is set (in which case it is looking for functions from
the libgcc_s library) so unset it
--- xen-4.0.1/xen/Rules.mk.orig 2010-05-22 14:39:11.000000000 +0100
+++ xen-4.0.1/xen/Rules.mk 2010-07-24 14:14:01.000000000 +0100
@@ -71,6 +71,7 @@
DEPS = .*.d
CFLAGS += $(CFLAGS-y)
+CFLAGS += -fno-exceptions
# Most CFLAGS are safe for assembly files:
# -std=gnu{89,99} gets confused by #-prefixed end-of-line comments
------
Build of xen-4.0.1/stubdom/mini-os-x86_64-ioemu/netfront.o fails with the
errors
netfront.c:41:32: error: variably modified 'tx_freelist' at file scope
netfront.c:44:34: error: variably modified 'rx_buffers' at file scope
netfront.c:45:34: error: variably modified 'tx_buffers' at file scope
so use __CONST_RING_SIZE instead of __RING_SIZE
The patch is based on
http://xenbits.xen.org/linux-2.6.18-xen.hg?rev/efae51e0fa91
--- xen-4.0.1/extras/mini-os/netfront.c.orig 2010-05-22 14:39:10.000000000
+0100
+++ xen-4.0.1/extras/mini-os/netfront.c 2010-07-24 21:54:55.000000000 +0100
@@ -25,8 +25,8 @@
-#define NET_TX_RING_SIZE __RING_SIZE((struct netif_tx_sring *)0, PAGE_SIZE)
-#define NET_RX_RING_SIZE __RING_SIZE((struct netif_rx_sring *)0, PAGE_SIZE)
+#define NET_TX_RING_SIZE __CONST_RING_SIZE(netif_tx, PAGE_SIZE)
+#define NET_RX_RING_SIZE __CONST_RING_SIZE(netif_rx, PAGE_SIZE)
#define GRANT_INVALID_REF 0
------
xen-4.0.1/extras/mini-os/lib/math.c generates the warning
lib/math.c: In function '__qdivrem':
lib/math.c:196:9: error: 'tmp.ul[1]' may be used uninitialized in this function
under gcc 4.5 though this looks incorrect so turn off the warning
--- xen-4.0.1/extras/mini-os/minios.mk.orig 2010-02-02 20:43:00.000000000
+0000
+++ xen-4.0.1/extras/mini-os/minios.mk 2010-07-24 22:56:27.000000000 +0100
@@ -10,6 +10,7 @@
DEF_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
DEF_CFLAGS += $(call cc-option,$(CC),-fgnu89-inline)
DEF_CFLAGS += -Wstrict-prototypes -Wnested-externs -Wpointer-arith -Winline
+DEF_CFLAGS += -Wno-uninitialized
DEF_CPPFLAGS += -D__XEN_INTERFACE_VERSION__=$(XEN_INTERFACE_VERSION)
DEF_ASFLAGS += -D__ASSEMBLY__
-------
building xen-4.0.1/stubdom/mini-os-x86_64-ioemu/arch/x86/mm.o gives the
warning
mm.c: In function 'set_readonly':
mm.c:321:46: error: taking address of expression of type 'void'
so make the definition of shared_info consistent with the definition in
setup.c which doesn't
--- xen-4.0.1/extras/mini-os/arch/x86/mm.c.orig 2010-02-02 20:43:00.000000000
+0000
+++ xen-4.0.1/extras/mini-os/arch/x86/mm.c 2010-07-25 09:29:49.000000000
+0100
@@ -281,7 +281,7 @@
/*
* Mark portion of the address space read only.
*/
-extern void shared_info;
+extern char shared_info[PAGE_SIZE];
static void set_readonly(void *text, void *etext)
{
unsigned long start_address =
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|