WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] gcc 4.5 compile fixes for xen-4.0.1-rc4 for Fedora 14

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] gcc 4.5 compile fixes for xen-4.0.1-rc4 for Fedora 14
From: M A Young <m.a.young@xxxxxxxxxxxx>
Date: Sun, 25 Jul 2010 20:20:34 +0100 (BST)
Delivery-date: Sun, 25 Jul 2010 12:21:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Alpine 2.00 (LFD 1167 2008-08-23)
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

<Prev in Thread] Current Thread [Next in Thread>