Kernel 2.2.18 and GCC versions

From: J . A . Magallon (jamagallon@able.es)
Date: Thu Oct 12 2000 - 16:59:51 EST


Hi, everybody.

I have a little problem when compiling new kernels. I run Mandrake 7.1
with many many updates (its almost 7.2beta).
Kernel 2.2.18-pre15 compiles fine under gcc-2.95.2. It is just plain
2.2.17 with Alan's patch to 18-pre15.

I downloaded the gcc-2.96 rpms from rufus, and the compilation process
breaks at:
werewolf:/usr/src/linux# make bzImage
..
make[2]: Entering directory `/usr/src/linux-2.2.18-pre15/arch/i386/lib'
cc -D__KERNEL__ -I/usr/src/linux/include -D__ASSEMBLY__ -D__SMP__
-traditional -c checksum.S -o checksum.o
checksum.S:231: badly punctuated parameter list in #define
checksum.S:237: badly punctuated parameter list in #define
make[2]: *** [checksum.o] Echecksum.Srror 1
make[2]: Leaving directory `/usr/src/linux-2.2.18-pre15/arch/i386/lib'
make[1]: *** [first_rule] Error 2
make[1]: Leaving directory `/usr/src/linux-2.2.18-pre15/arch/i386/lib'
make: *** [_dir_arch/i386/lib] Error 2

The actual code in checksum.S that breaks 2.96 is:

#define SRC(y...) \
    9999: y ; \
    .section __ex_table, "a" ; \
    .long 9999b, 6001f ; \
    .previous

#define DST(y...) \
    9999: y ; \
    .section __ex_table, "a" ; \
    .long 9999b, 6002f ; \
    .previous

I suppose the var-args macro syntax is less permissive in 2.96...Anyone has
any
idea to make this code 2.96-compatible ? (yes, I know 2.96 is not
supported, but
if its a silly change...). Or it should work and is a 2.96 cpp bug ?

Then, because this versions of gcc are "not officially supposed to work",
got the egcs rpms (version 1.1.2, only egcs and egcs-cpp).
But then kgcc stops at:
werewolf:/usr/src/linux# make bzImage
..
make[1]: Entering directory `/usr/src/linux-2.2.18-pre15/arch/i386/kernel'
/usr/bin/kgcc -D__KERNEL__ -I/usr/src/linux/include -D__ASSEMBLY__
-D__SMP__ -traditional -c trampoline.S -o trampoline.o
/tmp/ccy1Wjci.s: Assembler messages:
/tmp/ccy1Wjci.s:884: Error: can't handle non absolute segment in `ljmp'
make[1]: *** [trampoline.o] Error 1
make[1]: Leaving directory `/usr/src/linux-2.2.18-pre15/arch/i386/kernel'
make: *** [_dir_arch/i386/kernel] Error 2

TIA, and sorry for the 'long long' message...

-- 
Juan Antonio Magallon Lacarta                         
mailto:jamagallon@able.es

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



This archive was generated by hypermail 2b29 : Sun Oct 15 2000 - 21:00:23 EST