ports/58279: Fix net/libnids build on -CURRENT
Samy Al Bahra
samy at kerneled.com
Mon Oct 20 14:10:19 UTC 2003
>Number: 58279
>Category: ports
>Synopsis: Fix net/libnids build on -CURRENT
>Confidential: no
>Severity: critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Oct 20 07:10:17 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Samy Al Bahra
>Release: FreeBSD 5.1-CURRENT i386
>Organization:
Kerneled
>Environment:
System: FreeBSD beastie.freebsd.local 5.1-CURRENT FreeBSD 5.1-CURRENT #0: Wed Aug 20 18:35:24 AST 2003 samy at beastie.freebsd.local:/usr/src/sys/i386/compile/KERNELED i386
>Description:
libnids does not build on 5.X due to
multiline literals (which is depreciated in
gcc 3.X). The attached patch fixes this
issue in one of the files.
>How-To-Repeat:
Build on 5.X.
>Fix:
diff -ruN libnids/Makefile /tmp/libnids/Makefile
--- libnids/Makefile Mon Oct 20 17:02:08 2003
+++ /tmp/libnids/Makefile Mon Oct 20 17:01:53 2003
@@ -22,10 +22,6 @@
.include <bsd.port.pre.mk>
-.if ${OSVERSION} >= 501000
-BROKEN= "Does not compile"
-.endif
-
do-install:
${INSTALL_DATA} ${WRKSRC}/src/nids.h ${PREFIX}/include
${INSTALL_DATA} ${WRKSRC}/src/libnids.a ${PREFIX}/lib
diff -ruN libnids/files/patch-src::checksum.c /tmp/libnids/files/patch-src::checksum.c
--- libnids/files/patch-src::checksum.c Thu Jan 1 03:00:00 1970
+++ /tmp/libnids/files/patch-src::checksum.c Mon Oct 20 17:01:40 2003
@@ -0,0 +1,203 @@
+--- src/checksum.c.orig Mon Oct 20 16:57:38 2003
++++ src/checksum.c Mon Oct 20 17:01:34 2003
+@@ -23,68 +23,62 @@
+ csum_partial(const u_char * buff, int len, u_int sum)
+ {
+ __asm__ (
+-/* "pushl %esi
+- pushl %ebx
+- movl 20(%esp),%eax # Function arg: u_int sum
+- movl 16(%esp),%ecx # Function arg: int len
+- movl 12(%esp),%esi # Function arg: u_char *buff*/
+-
+- "testl $2, %%esi
+- jz 2f
+- subl $2, %%ecx
+- jae 1f
+- addl $2, %%ecx
+- jmp 4f
+-1: movw (%%esi), %%bx
+- addl $2, %%esi
+- addw %%bx, %%ax
+- adcl $0, %%eax
+-2:
+- movl %%ecx, %%edx
+- shrl $5, %%ecx
+- jz 2f
+- testl %%esi, %%esi
+-1: movl (%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 4(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 8(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 12(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 16(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 20(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 24(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- movl 28(%%esi), %%ebx
+- adcl %%ebx, %%eax
+- lea 32(%%esi), %%esi
+- dec %%ecx
+- jne 1b
+- adcl $0, %%eax
+-2: movl %%edx, %%ecx
+- andl $0x1c, %%edx
+- je 4f
+- shrl $2, %%edx
+-3: adcl (%%esi), %%eax
+- lea 4(%%esi), %%esi
+- dec %%edx
+- jne 3b
+- adcl $0, %%eax
+-4: andl $3, %%ecx
+- jz 7f
+- cmpl $2, %%ecx
+- jb 5f
+- movw (%%esi),%%cx
+- leal 2(%%esi),%%esi
+- je 6f
+- shll $16,%%ecx
+-5: movb (%%esi),%%cl
+-6: addl %%ecx,%%eax
+- adcl $0, %%eax
+-7: "
++ "testl $2, %%esi\n"\
++ "jz 2f\n"\
++ "subl $2, %%ecx\n"\
++ "jae 1f\n"\
++ "addl $2, %%ecx\n"\
++ "jmp 4f\n"\
++"1: movw (%%esi), %%bx\n"\
++" addl $2, %%esi\n"\
++" addw %%bx, %%ax\n"\
++" adcl $0, %%eax\n"\
++"2:\n"\
++" movl %%ecx, %%edx\n"\
++" shrl $5, %%ecx\n"\
++" jz 2f\n"\
++" testl %%esi, %%esi\n"\
++"1: movl (%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 4(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 8(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 12(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 16(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 20(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 24(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" movl 28(%%esi), %%ebx\n"\
++" adcl %%ebx, %%eax\n"\
++" lea 32(%%esi), %%esi\n"\
++" dec %%ecx\n"\
++" jne 1b\n"\
++" adcl $0, %%eax\n"\
++"2: movl %%edx, %%ecx\n"\
++" andl $0x1c, %%edx\n"\
++" je 4f\n"\
++" shrl $2, %%edx\n"\
++"3: adcl (%%esi), %%eax\n"\
++" lea 4(%%esi), %%esi\n"\
++" dec %%edx\n"\
++" jne 3b\n"\
++" adcl $0, %%eax\n"\
++"4: andl $3, %%ecx\n"\
++" jz 7f\n"\
++" cmpl $2, %%ecx\n"\
++" jb 5f\n"\
++" movw (%%esi),%%cx\n"\
++" leal 2(%%esi),%%esi\n"\
++" je 6f\n"\
++" shll $16,%%ecx\n"\
++"5: movb (%%esi),%%cl\n"\
++"6: addl %%ecx,%%eax\n"\
++" adcl $0, %%eax\n"\
++"7: "
+ : "=a"(sum)
+ : "0"(sum), "c"(len), "S"(buff)
+ : "bx", "dx");
+@@ -103,25 +97,24 @@
+ {
+ u_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:
+- "
++ __asm__ __volatile__(
++" movl (%1), %0\n"\
++" subl $4, %2\n"\
++" jbe 2f\n"\
++" addl 4(%1), %0\n"\
++" adcl 8(%1), %0\n"\
++" adcl 12(%1), %0\n"\
++"1: adcl 16(%1), %0\n"\
++" lea 4(%1), %1\n"\
++" decl %2\n"\
++" jne 1b\n"\
++" adcl $0, %0\n"\
++" movl %0, %2\n"\
++" shrl $16, %0\n"\
++" addw %w2, %w0\n"\
++" adcl $0, %0\n"\
++" notl %0\n"\
++"2:\n"
+ /*
+ Since the input registers which are loaded with iph and ipl
+ are modified, we must also specify them as outputs, or gcc
+@@ -137,10 +130,9 @@
+ static inline u_int
+ csum_fold(u_int sum)
+ {
+- __asm__("
+- addl %1, %0
+- adcl $0xffff, %0
+- "
++ __asm__(
++" addl %1, %0\n"\
++" adcl $0xffff, %0\n"
+ : "=r" (sum)
+ : "r" (sum << 16), "0" (sum & 0xffff0000)
+ );
+@@ -155,12 +147,11 @@
+ csum_tcpudp_magic(u_int saddr, u_int daddr, u_short len,
+ u_short proto, u_int sum)
+ {
+- __asm__("
+- addl %1, %0
+- adcl %2, %0
+- adcl %3, %0
+- adcl $0, %0
+- "
++ __asm__(
++" addl %1, %0\n"\
++" adcl %2, %0\n"\
++" adcl %3, %0\n"\
++" adcl $0, %0\n"
+ : "=r" (sum)
+ : "g" (daddr), "g"(saddr), "g"((ntohs(len) << 16) + proto * 256), "0"(sum));
+ return (csum_fold(sum));
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list