This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Arrgh. arm 2.4 kernel is a fork.


Having spent a little while trying to write a script to build a
kernel for every supported CPU,
I'm kind of fed up with the fragmentation of the linux-2.4 kernel
series.  To build an arm kernel at all, you have to apply a megapatch, e.g.
ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-2.4.26-vrs1.bz2
Some of the changes in those patches are innocent, and should really be in
the vanilla kernel, like this one, which fixes the error
 drivers/char/char.o(.text+0x178a4): In function `$a': undefined reference to `get_user'

diff -urN linux-2.4.26/drivers/char/wdt977.c linux-2.4.26-vrs1/drivers/char/wdt977.c
--- linux-2.4.26/drivers/char/wdt977.c  2002-11-28 23:53:12.000000000 +0000
+++ linux-2.4.26-vrs1/drivers/char/wdt977.c     2004-01-14 21:32:25.000000000 +0000
@@ -27,6 +27,7 @@
 #include <asm/io.h>
 #include <asm/system.h>
 #include <asm/mach-types.h>
+#include <asm/uaccess.h>

#define WATCHDOG_MINOR 130

(C'mon, send that to Marcello already.)   And then there are the stinkers
that make it clear that the arm kernel is a bit of a fork:

diff -urN linux-2.4.26/kernel/Makefile linux-2.4.26-vrs1/kernel/Makefile
--- linux-2.4.26/kernel/Makefile        2001-09-17 05:22:40.000000000 +0100
+++ linux-2.4.26-vrs1/kernel/Makefile   2004-01-14 21:32:30.000000000 +0000
@@ -9,16 +9,19 @@

O_TARGET := kernel.o

-export-objs = signal.o sys.o kmod.o context.o ksyms.o pm.o exec_domain.o printk.o
+export-objs = signal.o sys.o kmod.o context.o ksyms.o pm.o exec_domain.o \
+             printk.o fork.o cpufreq.o

-obj-y     = sched.o dma.o fork.o exec_domain.o panic.o printk.o \
+obj-y     = sched.o fork.o exec_domain.o panic.o printk.o \
            module.o exit.o itimer.o info.o time.o softirq.o resource.o \
            sysctl.o acct.o capability.o ptrace.o timer.o user.o \
            signal.o sys.o kmod.o context.o

+obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
 obj-$(CONFIG_UID16) += uid16.o
 obj-$(CONFIG_MODULES) += ksyms.o
 obj-$(CONFIG_PM) += pm.o
+obj-$(CONFIG_CPU_FREQ) += cpufreq.o

 ifneq ($(CONFIG_IA64),y)
 # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is

Note how that gets rid of dma.c.  This is because arm has its own private
version of dma.c elsewhere, and you can't link a kernel with both.
And once you apply this patch, you can't build a kernel for anything but arm.

That's it.  I'm giving up on 2.4; it's too fragmented.
I suspect 2.6 is a bit more unified.  If not, well, it's not in
deep freeze mode like 2.4 is, and the forkettes can be fixed.
- Dan

--
My technical stuff: http://kegel.com
My politics: see http://www.misleader.org for examples of why I'm for regime change

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]