Date: Thu, 02 Jun 2005 14:38:25 +0200 From: =?ISO-8859-1?Q?Jean-S=E9bastien_P=E9dron?= <jspedron@club-internet.fr> To: obrien@freebsd.org Cc: freebsd-ia64@freebsd.org, freebsd-ppc@freebsd.org, freebsd-amd64@freebsd.org, freebsd-alpha@freebsd.org, Jung-uk Kim <jkim@niksun.com> Subject: Re: [CALL FOR TESTERS] ReiserFS on non-i386 hardware patch Message-ID: <429EFDC1.6040905@club-internet.fr> In-Reply-To: <20050602082615.GA36096@dragon.NUXI.org> References: <429D860A.5000608@club-internet.fr> <Pine.SOC.4.61.0506011555050.28761@tea.blinkenlights.nl> <429DFEA1.8000004@club-internet.fr> <200506011833.12686.jkim@niksun.com> <20050602082615.GA36096@dragon.NUXI.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigC6997053FA7B93B9E39A6752 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit David O'Brien wrote: > On Wed, Jun 01, 2005 at 06:33:12PM -0400, Jung-uk Kim wrote: > >>The kernel module doesn't load because of an amd64-specific GCC 3.4 >>optimization bug. To work around: >> >>Index: Makefile >>=================================================================== >>RCS file: /home/ncvs/src/sys/modules/reiserfs/Makefile,v >>retrieving revision 1.1 >>diff -u -r1.1 Makefile >>--- Makefile 24 May 2005 12:30:13 -0000 1.1 >>+++ Makefile 1 Jun 2005 22:22:52 -0000 >>@@ -8,4 +8,8 @@ >> reiserfs_namei.c reiserfs_prints.c reiserfs_stree.c \ >> reiserfs_vfsops.c reiserfs_vnops.c >> >>+.if ${MACHINE_ARCH} == "amd64" >>+CFLAGS+= -minline-all-stringops >>+.endif >>+ > > Unfortunately we really don't like to put this type of CFLAGS in non-*.mk > files. Since we know the GCC 3.4.2 compiler bugs will be fixed, I > suggest we just document this issue and be happy that otherwise the code > is ready to go on FreeBSD/amd64. Thank you Jung-Ku and David for your feedback. Olivier Houchard could test it on amd64 too and found another workaround for this same issue. The problem come from this macro: #define INITIALIZE_PATH(var) \ struct path var = { ILLEGAL_PATH_ELEMENT_OFFSET, } where gcc generates a call to memset(). By replacing it with: #define INITIALIZE_PATH(var) \ struct path var; \ bzero(&var); \ var.path_length = ILLEGAL_PATH_ELEMENT_OFFSET it works. I can add this (in favor of the CFLAGS workaround) and document it. When a fixed gcc will be in the tree, it'll be removed. -- Jean-Sébastien Pédron http://www.dumbbell.fr/ PGP Key: http://www.dumbbell.fr/pgp/pubkey.asc --------------enigC6997053FA7B93B9E39A6752 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFCnv3Ja+xGJsFYOlMRAqrpAJ4ze67ysxFGJVNSX5YGdIbTos3tEwCeODRC GAXpNeLbN2Y3+IvvmxJaLao= =A2AX -----END PGP SIGNATURE----- --------------enigC6997053FA7B93B9E39A6752--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?429EFDC1.6040905>