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