Skip to contentSkip to conversation

gcc 3.5 compile fixes

DISCUSSION Andi Kleen 2 participants 3 messages Jul 9, 2004 – Jul 10, 2004

Subsystems (7)
lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

I tried to compile 2.6.7-bk9 with a recent gcc 3.5 snapshot on i386 and x86-64. It gave a lot of warnings and a lot of compile errors for make allyesconfig.

On x86-64 it miscompiled the kernel (due to kernel bugs); I will send fixes for that separately.

Most compile errors were about mixing extern and static declarations of the same symbol. I fixed this all except for the au88x0 driver in ALSA which had a too broken module setup (someone else will have to tackle that)

I got one gcc internal compiler error while compiling the sunrpc gss module. I filed an gcc bug for that.

One problem was that it didn't always inline fix_to_virt() which resulted in undefined symbols. (gcc 3.4 and up doesn't set always inline for normal inline). I fixed this by defining a new macro __always_inline in compiler.h and using that for fix_to_virt

Another issue (I think already fixed in -mm) was that memmove() needs to be moved out of line.

The result were a lot of patches for a lot of files. Instead of spamming l-k with them all I put them in
http://www.firstfloor.org/~andi/35/
Andrew, please consider adding them to your tree.

The resulting i386 kernel booted on one machine; but failed to find the SCSI disks on another (didn't investigate what the problem was on the later, some more work needed on that)

-Andi

#1 lore raw

I need the following patch to make recent -bk kernels compile against gcc35.

Quoted 35 lines · Andi Kleen

I tried to compile 2.6.7-bk9 with a recent gcc 3.5 snapshot on i386 and x86-64. It gave a lot of warnings and a lot of compile errors for make allyesconfig.

On x86-64 it miscompiled the kernel (due to kernel bugs); I will send fixes for that separately.

Most compile errors were about mixing extern and static declarations of the same symbol. I fixed this all except for the au88x0 driver in ALSA which had a too broken module setup (someone else will have to tackle that)

I got one gcc internal compiler error while compiling the sunrpc gss module. I filed an gcc bug for that.

One problem was that it didn't always inline fix_to_virt() which resulted in undefined symbols. (gcc 3.4 and up doesn't set always inline for normal inline). I fixed this by defining a new macro __always_inline in compiler.h and using that for fix_to_virt

Another issue (I think already fixed in -mm) was that memmove() needs to be moved out of line.

The result were a lot of patches for a lot of files. Instead of spamming l-k with them all I put them in
http://www.firstfloor.org/~andi/35/
Andrew, please consider adding them to your tree.

The resulting i386 kernel booted on one machine; but failed to find the SCSI disks on another (didn't investigate what the problem was on the later, some more work needed on that)

(quoted diff) +0 -2
-Andi
 
-
Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

arch/i386/kernel/cpu/mtrr/if.c +1 -1
diff -uNr linux-2.6.7-mm7/arch/i386/kernel/cpu/mtrr/if.c linux-2.6.7-mm7-gcc35/arch/i386/kernel/cpu/mtrr/if.c
@@ -16,7 +16,7 @@
 
 #define FILE_FCOUNT(f) (((struct seq_file *)((f)->private_data))->private)
 
-static char *mtrr_strings[MTRR_NUM_TYPES] =
+char *mtrr_strings[MTRR_NUM_TYPES] =
 {
     "uncachable",               /* 0 */
     "write-combining",          /* 1 */
drivers/pcmcia/ds.c +1 -1
diff -uNr linux-2.6.7-mm7/drivers/pcmcia/ds.c linux-2.6.7-mm7-gcc35/drivers/pcmcia/ds.c
@@ -413,7 +413,7 @@
 EXPORT_SYMBOL(pcmcia_unregister_driver);
 
 #ifdef CONFIG_PROC_FS
-static struct proc_dir_entry *proc_pccard = NULL;
+struct proc_dir_entry *proc_pccard = NULL;
 
 static int proc_read_drivers_callback(struct device_driver *driver, void *d)
 {
drivers/usb/class/usblp.c +1 -1
diff -uNr linux-2.6.7-mm7/drivers/usb/class/usblp.c linux-2.6.7-mm7-gcc35/drivers/usb/class/usblp.c
@@ -1179,7 +1179,7 @@
 
 MODULE_DEVICE_TABLE (usb, usblp_ids);
 
-static struct usb_driver usblp_driver = {
+struct usb_driver usblp_driver = {
 	.owner =	THIS_MODULE,
 	.name =		"usblp",
 	.probe =	usblp_probe,
net/ipv6/ip6_fib.c +1 -1
diff -uNr linux-2.6.7-mm7/net/ipv6/ip6_fib.c linux-2.6.7-mm7-gcc35/net/ipv6/ip6_fib.c
@@ -94,7 +94,7 @@
 
 static struct timer_list ip6_fib_timer = TIMER_INITIALIZER(fib6_run_gc, 0, 0);
 
-static struct fib6_walker_t fib6_walker_list = {
+struct fib6_walker_t fib6_walker_list = {
 	.prev	= &fib6_walker_list,
 	.next	= &fib6_walker_list, 
 };
net/ipv6/xfrm6_state.c +1 -1
diff -uNr linux-2.6.7-mm7/net/ipv6/xfrm6_state.c linux-2.6.7-mm7-gcc35/net/ipv6/xfrm6_state.c
@@ -119,7 +119,7 @@
 	return x0;
 }
 
-static struct xfrm_state_afinfo xfrm6_state_afinfo = {
+struct xfrm_state_afinfo xfrm6_state_afinfo = {
 	.family			= AF_INET6,
 	.lock			= RW_LOCK_UNLOCKED,
 	.init_tempsel		= __xfrm6_init_tempsel,
scripts/kconfig/mconf.c +1 -1
diff -uNr linux-2.6.7-mm7/scripts/kconfig/mconf.c linux-2.6.7-mm7-gcc35/scripts/kconfig/mconf.c
@@ -88,7 +88,7 @@
 static int indent;
 static struct termios ios_org;
 static int rows, cols;
-static struct menu *current_menu;
+struct menu *current_menu;
 static int child_count;
 static int do_resize;
 static int single_menu_mode;
author
#2 lore raw
Quoted 2 lines · Felipe Alfaro Solana

I need the following patch to make recent -bk kernels compile against gcc35.

It's mostly redundant with my patch kit, except for scripts/* change. I missed that.

-Andi