Package: gcc

Version: 1:3.3.1-0pre0

 

Problem: gcc fails to parse correctly the __asm__ __volatile__ section

 

Reproductivity: kernel 2.4.16 recompilation - /include/asm-i386/checksum.h

 

Distribution: sarge

 

Source of he kernel is not in /usr/src but in /root/compile/kernel-source-2.4.16

make-kpkg --append-to-version -dury --config menuconfig --bzImage clean configure buildpackage

 

code that conducts to faulty behavior:

 

static inline unsigned short ip_fast_csum(unsigned char * iph, unsigned int ihl) { unsigned int sum;

 

__asm__ __volatile__("

movl (%1), %0

subl $4, %2

jbe 2f

addl 4(%1), %0

adcl 8(%1), %0

adcl 12(%1), %0

1: adcl 16(%1), %0

lea 4(%1), %1

decl %2

jne 1b

adcl $0, %0

movl %0, %2

shrl $16, %0

addw %w2, %w0

adcl $0, %0

notl %0

2:

"

/* Since the input registers which are loaded with iph and ipl are modified, we must also specify them as outputs, or gcc will assume they contain their original values. */

: "=r" (sum), "=r" (iph), "=r" (ihl)

: "1" (iph), "2" (ihl));

return(sum);

}

 

Error is signaled in line 72 of the file.

 

Petrisor Eddy Marian

 

 

Reply via email to