Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Wed, 28 Nov 2001 16:22:14 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Wed, 28 Nov 2001 16:22:04 -0500 Received: from cc78409-a.hnglo1.ov.nl.home.com ([212.120.97.185]:51075 "EHLO dexter.hensema.xs4all.nl") by vger.kernel.org with ESMTP id ; Wed, 28 Nov 2001 16:21:51 -0500 From: spamtrap@use.reply-to (Erik Hensema) Subject: PATCH: Re: Compilation problem in ndisc.c / 2.5.1-pre2 : possible gcc bug? Date: 28 Nov 2001 21:04:39 GMT Message-ID: In-Reply-To: <3C054422.FB546EFE@didntduck.org> Reply-To: erik@hensema.net User-Agent: slrn/0.9.6.3 (Linux) To: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Brian Gerst (bgerst@didntduck.org) wrote: >"Richard B. Johnson" wrote: >> >> On Wed, 28 Nov 2001, Martin Eriksson wrote: >> > From: "Richard B. Johnson" >> > > On 28 Nov 2001, Erik Hensema wrote: >> > > > I've been looking into the compile problems of net/ipv6/ndisc.c in >> > > > 2.5.1-pre2 and I found that the asm generated by gcc (2.95.3) is wrong: >> > > > >> > > > This is a small part of a diff betweem two asm files generated by gcc, >> > note >> > > > the missing \n's in the wrong code: >> > > [code] >> > > This is probably just some loop unrolling, not some as you say "wrong >> > > code". >> > >> > Correct me if I'm wrong, but I don't think "%edxadcl" really assembles.... >> >> No, but an edited 'diff' of the assembly output of a 'C' compiler doesn't >> really tell much. Note, no line numbers, no clue as to what the diff >> was about. The actual defective section of code would be much more >> instructive. For instance, is this as a result of an in-line macro >> expansion; the result of a 'dos' file; the true output of >> a 'C' file with no __inline__ __asm__? > >It's from include/asm-i386/checksum.h, specifically csum_ipv6_magic(). >The asm statements in this header file need semicolons or explicit >newlines after each opcode. You're right, that was the problem. This patch fixes it: --- linux/include/asm-i386/checksum.h.orig Wed Nov 28 21:49:00 2001 +++ linux/include/asm-i386/checksum.h Wed Nov 28 21:52:28 2001 @@ -156,17 +156,17 @@ unsigned int sum) { __asm__( - "addl 0(%1), %0" - "adcl 4(%1), %0" - "adcl 8(%1), %0" - "adcl 12(%1), %0" - "adcl 0(%2), %0" - "adcl 4(%2), %0" - "adcl 8(%2), %0" - "adcl 12(%2), %0" - "adcl %3, %0" - "adcl %4, %0" - "adcl $0, %0" + "addl 0(%1), %0 ;\n" + "adcl 4(%1), %0 ;\n" + "adcl 8(%1), %0 ;\n" + "adcl 12(%1), %0 ;\n" + "adcl 0(%2), %0 ;\n" + "adcl 4(%2), %0 ;\n" + "adcl 8(%2), %0 ;\n" + "adcl 12(%2), %0 ;\n" + "adcl %3, %0 ;\n" + "adcl %4, %0 ;\n" + "adcl $0, %0 ;\n" : "=&r" (sum) : "r" (saddr), "r" (daddr), "r"(htonl(len)), "r"(htonl(proto)), "0"(sum)); -- Erik Hensema (erik@hensema.net) I'm on the list, no need to Cc: me, though I appreciate one if your mailer doesn't support the References header. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/