Bug 17028

Summary: Gcc error on a kernel compilation
Product: [Retired] Red Hat Linux Reporter: fleury
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0   
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2000-08-28 11:13:48 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description fleury 2000-08-28 11:13:46 UTC
Hi,
I've got a bug when I compile a 2.2.16 kernel (it comes directly from
kernel.org, I didn't take the rpm for that).

The error is :

checksum.S:231: badly punctuated parameter list in #define
checksum.S:237: badly punctuated parameter list in #define
make[2]: *** [checksum.o] Erreur 1
make[2]: Quitte le ripertoire `/usr/src/linux-2.2.16/arch/i386/lib'
make[1]: *** [first_rule] Erreur 2
make[1]: Quitte le ripertoire `/usr/src/linux-2.2.16/arch/i386/lib'
make: *** [_dir_arch/i386/lib] Erreur 2
[root@janus linux]#

I've got a SMP bi-PII@450MHz

I've tried to break through this bug. Apparently, it's .S instruction that
can't be understood. As I don't know a lot about that I give it up. The
problem come from /usr/src/linux-2.2.16/arch/i386/lib/checksum.S

#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

Friendly

Comment 1 Jakub Jelinek 2000-09-01 10:29:57 UTC
You should not compile 2.2.x kernels with gcc, but use kgcc instead.
The issue with checksum.S is that it either cannot be preprocessed with -traditional,
or must not use GNU varargs macros (gcc 2.96's tradcpp0 does not support
restargs macros). This has been fixed in 2.4 kernels (checksum.S is not
compiled there with -traditional).

Comment 2 fleury 2000-09-04 08:46:12 UTC
Ok, it works fine.

But I still have many problems with this version of gcc (especially on C++).