From owner-freebsd-hackers@FreeBSD.ORG Mon Dec 31 04:18:17 2007 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A73D16A417 for ; Mon, 31 Dec 2007 04:18:17 +0000 (UTC) (envelope-from mwm-keyword-freebsdhackers2.e313df@mired.org) Received: from mired.org (bhuda.mired.org [66.92.153.74]) by mx1.freebsd.org (Postfix) with SMTP id BCD8013C45A for ; Mon, 31 Dec 2007 04:18:16 +0000 (UTC) (envelope-from mwm-keyword-freebsdhackers2.e313df@mired.org) Received: (qmail 76114 invoked by uid 1001); 31 Dec 2007 04:18:10 -0000 Received: from bhuda.mired.org (localhost.localdomain [127.0.0.1]) by bhuda.mired.org (tmda-ofmipd) with ESMTP; Sun, 30 Dec 2007 23:18:09 -0500 Date: Sun, 30 Dec 2007 23:18:08 -0500 To: freebsd-hackers@freebsd.org Message-ID: <20071230231808.4eaa93d5@bhuda.mired.org> In-Reply-To: <20071230193718.GH31522@cicely12.cicely.de> References: <20071229.122221.-432830441.imp@bsdimp.com> <20071229193034.GA73845@freebie.xs4all.nl> <86prwp161k.fsf@ds4.des.no> <20071230093432.GF31522@cicely12.cicely.de> <20071230135506.47beac58@bhuda.mired.org> <20071230193718.GH31522@cicely12.cicely.de> Organization: Meyer Consulting X-Mailer: Claws Mail 2.9.1 (GTK+ 2.10.12; amd64-portbld-freebsd6.2) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEXguIzRkGnhyaz069mXhW0WHRnbrnR9WCQ6LB0CchNMAAACSUlEQVQ4jV2TQW7jMAxFGaPQOgQEdZaGMsgBrAvUA03dCxj1Uu4U2gfwQD7AGNax51NK07RcxXz6/CSl0Ij450vkPG1jzpIZM1UwDCl/xB14TWnNX8A00Qj5a0mnVFVbVUz4MeErea2HikSRqZzY894zwg9p2+/AtO8LzxFED+tNAUFeU29iFOLRxlZAcdo9A8wi8ZBMV4BKPde82Oxrvs6BTkulQIClte0DLFzzsKk9j1MBex8iUaP00Bd78S/muyFScrTXz6zLkEUxJp+SabQfNOs4f4Jpx5qSZ/304PWwlEWP1cOn/mJQR7EOD+uKhjcBLziuL7xoY5Xm+VFAUSw/LwwwsHEHxihpwV4EJH0xXRkbw1PkRw+X4pEuSJwBggqk+HEYKkiL5/74/nQkogigzQsAFrakxZyfw3wMIEEZPv4AWMfxwqE5GNxGaERjmH+PG8AE0L4/w9g0lsp1raLYAN5azQa+AOoO9NwcpFkTrG2VKNMNEL5UKUUAw34tha0z7onUG0oBoNtczE04GwFE3wCHc0ChezAJ6A1WMV81AtY7wDAJSlXwV+4cwBvsOsrQMRawfQEBz0deEZ7WNpV2szckIKo5VpDHDSDvF1GItwqqAlG01Hh50BGtVhuUkjkasg/14bYFGCgWg1fSWHvmOoJck2xdp9ZvZBHzDVTzX23TkrOn7qe5U2COEw5D4Vx3qEQpFY2Z/3QFnJxzp7YCmSMG19nOUoe869zZfOQb5ywQuWu0yCn5+8gxZz+BE7vG3j4/wbf4D/sXN9Wug1s7AAAAAElFTkSuQmCC Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Delivery-Agent: TMDA/1.1.11 (Ladyburn) From: Mike Meyer Cc: ticso@cicely.de Subject: Re: Architectures with strict alignment? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Dec 2007 04:18:17 -0000 On Sun, 30 Dec 2007 20:37:18 +0100 Bernd Walter = wrote: > On Sun, Dec 30, 2007 at 01:55:06PM -0500, Mike Meyer wrote: > > On Sun, 30 Dec 2007 10:34:33 +0100 Bernd Walter wrote: > > > On Sat, Dec 29, 2007 at 11:37:27PM +0100, Dag-Erling Sm=C3=B8rgrav wr= ote: > > > > Wilko Bulte writes: > > > > > In the past the alpha port had it too. > > > >=20 > > > > No, it was optional and defaulted to off. > > >=20 > > > It was never optional, since no alpha CPU can do missaligned access > > > Alphas can fix missaligned access by software trap handlers in the sa= me > > > way as most other strong alignment architectures can and we did this > > > for userland, but not in kernel. > >=20 > > > Nevertheless it is horribly slow to do this, but was required since > > > there was so many crappy software that days - fortunately this has > > > changed over time, although I still see aligment traps on new software > > > as well. > > > Sadly said we never implemented missaligment traps for x86 so > > [...] > >=20 > > Ok, I'm a bit confused. Since you're talking about moving code from > > the x86 to the alpha, I'm assuming you're talking about C code. Isn't > > it the *compilers* job to enforce alignment issues, unless the > > programmer specifically asks for byte-specific control of the layout > > of a set of variables? > Not in every case. > It is not unusual to read raw bytes from e.g. network and use > a struct pointer to it. > But in case of network data it may be missaligned and if the struct > contains anything else then bytes you may be doing missaligned accesses. Actually, network data is the most common case where the programmer has to ask for byte-specific control of the layout. As far as I know, the proper way to do this is to declare the struct properly - with a compiler-dependent request for packing - then read the data into that. If you could be reading more than one type of struct into it, then set up the appropriate unions for all of them. In either case, the compiler should DTRT. But it sounds like this people just read raw bytes, and then disassembled them by hand, which I would say qualifies as "crappy software." > > Or are these the issue, and the problem is that people do that and > > then don't use the appropriate APIs to pull data from them, thus > > causing you headaches? > No - they just don't think about alignment when parsing data from random > source. That seems to be common: if something doesn't matter on their platform, programmers tend not to worry about it. I saw plenty of evidence of that as Unix moved from 16 bit systems to 32 bit ones, and again as it went to 64 bits (though not quite so bad). Thanks, http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information.