From owner-cvs-src@FreeBSD.ORG Sat Apr 5 20:16:12 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 941EA37B401; Sat, 5 Apr 2003 20:16:12 -0800 (PST) Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by mx1.FreeBSD.org (Postfix) with ESMTP id E921E43F93; Sat, 5 Apr 2003 20:16:10 -0800 (PST) (envelope-from bde@zeta.org.au) Received: from katana.zip.com.au (katana.zip.com.au [61.8.7.246]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id OAA08016; Sun, 6 Apr 2003 14:16:08 +1000 Date: Sun, 6 Apr 2003 14:16:07 +1000 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: Maxime Henrion In-Reply-To: <200304052346.h35Nkwoi037742@repoman.freebsd.org> Message-ID: <20030406134416.A3578@gamplex.bde.org> References: <200304052346.h35Nkwoi037742@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/fxp if_fxpreg.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Apr 2003 04:16:13 -0000 On Sat, 5 Apr 2003, Maxime Henrion wrote: > mux 2003/04/05 15:46:58 PST > > FreeBSD src repository > > Modified files: > sys/dev/fxp if_fxpreg.h > Log: > ... > - Change some u_int to u_int8_t which make more sense here since > we're really defining bytes. That produces the same code due to > how bitfields work. This gives undefined behaviour and thus produces random code if it is compiled by a C compiler (unless Bool_t happens to be u_int8_t). From n869.txt: [#8] A bit-field shall have a type that is a qualified or unqualified version of _Bool, signed int, or unsigned int. I fixed this bug in many places, including in rev.1.13 of if_fxpreg.h. but it keeps getting reintroduced :-(. Bit-fields of other integer types are an unportable gcc extension. They affect the struct layout in unportable apparently-undocumented ways. IIRC, they don't affect internal padding but they do affect the size and alignment the struct -- a struct that has only uint8_t bit-fields in it has only the size and alignment requirements of uint8_t, while a struct with only u_int bit-fields in it has the size and alignment requirements of u_int. This may be controlled to some extent using other unportable gcc extensions. Bruce