From: Greg B. <gb...@po...> - 2001-01-10 07:13:47
|
Bryan Rittmeyer wrote: > > Hello linuxsh-dev, > > Since updating to GNU CVS binutils (with Denis's sh patches) and the > 11/2000 gcc 2.97 snapshot (using again Denis's patches), I get the > following 2.4.0 compile error: > > sh-linux-gnu-gcc -D__ASSEMBLY__ -D__KERNEL__ > -I/home/bryan/tmp/kernel/include -ml -m4-nofpu -c -o entry.o entry.S > entry.S: Assembler messages: > entry.S:376: Error: must be @(r0,...) > entry.S:377: Error: must be @(r0,...) > entry.S:378: Error: must be @(r0,...) > entry.S:379: Error: must be @(r0,...) > entry.S:380: Error: must be @(r0,...) > entry.S:434: Error: must be @(r0,...) > make[1]: *** [entry.o] Error 1 > make[1]: Leaving directory `/home/bryan/tmp/kernel/arch/sh/kernel' > > Anybody else seen this before or know how to fix it? Yes. Denis doesn't appear to be logged in at the moment, so I'll explain for him. The latest toolchain handles register names case-insensitively, so e.g. R0 is the same as r0. In the old toolchain R0 was not a register name but a symbol. The LinuxSH entry.S happens to use R0 etc as symbols (indicating the offsets into the stack register save area for specific saved registers). As a result the newest toolchain gets confused with entry.S. Denis has a patch for this which changes the Rx constants to OFF_Rx. > > Cheers, > > Bryan > > P.S. Thanks again to everyone for bringing me up to speed on the latest > development... Only by explaining to others do we reach full understanding ourselves. Greg. -- These are my opinions not PPIs. |