Date: Sun, 11 Apr 2010 20:13:40 +1000 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Roman Divacky <rdivacky@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Bruce Evans <brde@optusnet.com.au> Subject: Re: svn commit: r206424 - head/usr.bin/xlint/lint1 Message-ID: <20100411200313.G2454@besplex.bde.org> In-Reply-To: <20100411092417.GA37528@freebsd.org> References: <201004091521.o39FLBqx035856@svn.freebsd.org> <20100411175432.S10835@delplex.bde.org> <20100411092417.GA37528@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 11 Apr 2010, Roman Divacky wrote: > On Sun, Apr 11, 2010 at 07:16:12PM +1000, Bruce Evans wrote: >> .... However2, the system ALIGN() on >> amd64 doesn't know the correct alignment either (both essentially had >> 64 bits hard-coded). Now xlint uses a different hard-coded alignment >> (128 bits). > > so you suggest fixing the ALIGN on amd64? ie. to make it 128bit? It's an ABI change, thus needs careful release engineering. _ALIGN (= ALIGN) is used in the CMSG ABI in <sys/socket.h> so I think would affect public ABIs. amd64 has a strict ABI which I think involves 128-byte alignment for long doubles (not sure if it specifies anything for non-C things like copies of SSE registers). The system should have a macro to support the maximal alignment and it is easiest to use ALIGN() for this (otherwise you would need a new macro for this and keep ALIGN() for pointers and longs...). Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100411200313.G2454>