Date: Mon, 13 Nov 2006 10:43:11 +0100 From: Stefan Farfeleder <stefanf@FreeBSD.org> To: Bruce Evans <bde@zeta.org.au> Cc: Joseph Koshy <jkoshy@FreeBSD.org>, src-committers@FreeBSD.org, cvs-all@FreeBSD.org, cvs-src@FreeBSD.org Subject: Re: cvs commit: src/include ar.h Message-ID: <20061113094311.GC97460@wombat.fafoe.narf.at> In-Reply-To: <20061113173927.Q75708@delplex.bde.org> References: <200611130428.kAD4ST0U093715@repoman.freebsd.org> <20061113173927.Q75708@delplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Nov 13, 2006 at 07:30:11PM +1100, Bruce Evans wrote: > On Mon, 13 Nov 2006, Joseph Koshy wrote: > > >jkoshy 2006-11-13 04:28:29 UTC > > > > FreeBSD src repository > > > > Modified files: > > include ar.h > > Log: > > Attempt to improve application portability by marking `struct ar_hdr' > > as `packed'. > > > > The C standard leaves the alignment of individual members of a C > > struct upto the implementation, so pedantically speaking portable > > code cannot assume that the layout of a `struct ar_hdr' in memory > > will match its layout in a file. Using a __packed attribute > > declaration forces file and memory layouts for this structure to > > match. > > > > Submitted by: ru > > I don't see how this can be more portable. It uses an unportable > extension, but packing is automatic on all compilers that are known > to support this extension. On compilers that are not known to support > this extension (all except gcc >= 2.7 and icc), using __packed gives > a syntax error and thus changes code that is portable in practice into > code that doesn't compile. On lints that known not to support this > extension (FreeBSD lint), linting for portability is broken by not > giving the syntax error. > > In <ar.h>, all struct members are char arrays so there will be no > padding in practice. You seem to have missed the discussion on -current. GCC pads "struct foo { char c; };" to 4 bytes on ARM. I agree on __packed not being portable. Stefan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061113094311.GC97460>