Re: Cannot compile linux-2.4.27-rc1 ... ipt_REJECT.c

From: Mikael Pettersson
Date: Mon Jun 21 2004 - 16:24:10 EST


Martin MOKREJ© writes:
> gcc -D__KERNEL__ -I/usr/src/linux-2.4.27-rc1/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -fno-unit-at-a-time -nostdinc -iwithprefix include -DKBUILD_BASENAME=vt -c -o vt.o vt.c
> vt.c: In function `do_kdsk_ioctl':
> vt.c:166: warning: comparison is always false due to limited range of data type
> vt.c: In function `do_kdgkb_ioctl':
> vt.c:283: warning: comparison is always false due to limited range of data type

This happens with many gcc-3.x versions, not just gcc-3.4.
In any case, it doesn't prevent a successful kernel build.

> gcc -D__KERNEL__ -I/usr/src/linux-2.4.27-rc1/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -fno-unit-at-a-time -nostdinc -iwithprefix include -DKBUILD_BASENAME=highmem -c -o highmem.o highmem.c
> highmem.c:133: error: conflicting types for 'kmap_high'
> /usr/src/linux-2.4.27-rc1/include/asm/highmem.h:59: error: previous declaration of 'kmap_high' was here
> highmem.c:133: error: conflicting types for 'kmap_high'
> /usr/src/linux-2.4.27-rc1/include/asm/highmem.h:59: error: previous declaration of 'kmap_high' was here
> highmem.c:158: error: conflicting types for 'kunmap_high'
> /usr/src/linux-2.4.27-rc1/include/asm/highmem.h:60: error: previous declaration of 'kunmap_high' was here
> highmem.c:158: error: conflicting types for 'kunmap_high'
> /usr/src/linux-2.4.27-rc1/include/asm/highmem.h:60: error: previous declaration of 'kunmap_high' was here

This is HIGHMEM which I never tested before. The problem is yet
another FASTCALL/fastcall discrepancy where a function's definition
doesn't have the exact same attributes as its prototype.

My updated gcc340 patch fixes this problem. Get
<http://www.csd.uu.se/~mikpe/linux/patches/2.4/patch-gcc340-fixes-v2-2.4.27-rc1>
or simply apply the patch below on top of the previous version.

/Mikael

--- linux-2.4.27-rc1/mm/highmem.c.~1~ 2003-06-14 13:30:29.000000000 +0200
+++ linux-2.4.27-rc1/mm/highmem.c 2004-06-21 22:42:58.000000000 +0200
@@ -129,7 +129,7 @@
return vaddr;
}

-void *kmap_high(struct page *page, int nonblocking)
+void fastcall *kmap_high(struct page *page, int nonblocking)
{
unsigned long vaddr;

@@ -154,7 +154,7 @@
return (void*) vaddr;
}

-void kunmap_high(struct page *page)
+void fastcall kunmap_high(struct page *page)
{
unsigned long vaddr;
unsigned long nr;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/