From owner-freebsd-arm@FreeBSD.ORG Fri Jan 25 12:54:49 2008 Return-Path: Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C723316A417 for ; Fri, 25 Jan 2008 12:54:49 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 8FBE313C45A for ; Fri, 25 Jan 2008 12:54:49 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 8DAEB207F; Fri, 25 Jan 2008 13:54:40 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.2/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id 06F73207E; Fri, 25 Jan 2008 13:54:40 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id D1EAE844B6; Fri, 25 Jan 2008 13:54:39 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Willem Jan Withagen References: <479880A7.1030107@digiware.nl> <20080124.084828.1608359032.imp@bsdimp.com> <864pd386mj.fsf@ds4.des.no> <20080124.110954.179240992.imp@bsdimp.com> <47991E08.6070609@digiware.nl> <20080125041540.GA30262@zibbi.meraka.csir.co.za> <4799A2B3.4060003@digiware.nl> <86prvq5eua.fsf@ds4.des.no> <20080125113916.GP81396@plum.flirble.org> Date: Fri, 25 Jan 2008 13:54:39 +0100 In-Reply-To: <20080125113916.GP81396@plum.flirble.org> (Nicholas Clark's message of "Fri\, 25 Jan 2008 11\:39\:16 +0000") Message-ID: <86hch25als.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-arm@freebsd.org Subject: Re: sshd broken on arm? X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Jan 2008 12:54:49 -0000 Nicholas Clark writes: > On Fri, Jan 25, 2008 at 12:23:09PM +0100, Dag-Erling Smrgrav wrote: > > None of this matters. What John pointed out means that the code is > > wrong and the compiler is right. The code is not allowed to assume > > that an object is correctly aligned unless it is of a type that > > requires the correct alignment. The easiest way to do this is with > > a union, e.g. > Whilst that is correct, why is the compiler changing the alignment of the > struct for different optimiser settings but all other flags identical? Because *it is not a struct*. It is an array of char, and char has no special alignment requirement. The bug is in the code, which uses pointer aliasing in a way that is strictly speaking legal but which places responsibility for alignment issues squarely in the code and not the compiler. IIRC, this is precisely the same issue that we had in libalias when the checksum recalculation broke because it was doing unaligned 16-bit accesses (many years ago now, see twowords() in alias.c) DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no