Date: Mon, 20 Sep 2010 16:55:57 +1000 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Marcel Moolenaar <marcel@FreeBSD.org> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r212886 - head/sbin/growfs Message-ID: <20100920163758.A788@besplex.bde.org> In-Reply-To: <201009200420.o8K4KtKn026514@svn.freebsd.org> References: <201009200420.o8K4KtKn026514@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 20 Sep 2010, Marcel Moolenaar wrote: > Log: > Unbreak the build on strong-aligned architectures (arm, ia64). > Casting from (char *) to (struct ufs1_dinode *) changes the > alignment requirement of the pointer and GCC does not know that > the pointer is adequately aligned (due to malloc(3)), and warns > about it. Cast to (void *) first to by-pass the check. A previous version in which the pointer (iobuf) the correct type to begin with was better. It used to have type void *, but now has type caddr_t (whose existence is a bug), in order to abuse caddr_t by assuming that it is char * to do pointer arithmetic on it in 1 place (iobuf + sblock.fs_cgsize). The 7 other places where iobuf is used only assume that caddr_t is a pointer (or perhaps a [u]intptr_t). growfs has no other instances of caddr_t. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100920163758.A788>