From owner-freebsd-current@FreeBSD.ORG Fri Aug 16 15:41:56 2013 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 496B2E08; Fri, 16 Aug 2013 15:41:56 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [87.251.56.140]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0900A2F3C; Fri, 16 Aug 2013 15:41:55 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::70f6:891e:806a:7c37] (unknown [IPv6:2001:7b8:3a7:0:70f6:891e:806a:7c37]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 3586F5C43; Fri, 16 Aug 2013 17:41:52 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: building i386 world on amd64 host: failed @svn From: Dimitry Andric In-Reply-To: <20130816150201.GF4972@kib.kiev.ua> Date: Fri, 16 Aug 2013 17:41:50 +0200 Content-Transfer-Encoding: 7bit Message-Id: <495D839B-4327-4E96-B4F4-66413D2ACD78@FreeBSD.org> References: <17A40261-A0DA-4070-990F-0D0777A5BE44@FreeBSD.org> <20130815183640.GR4972@kib.kiev.ua> <20130815193049.GU4972@kib.kiev.ua> <520D2E40.2090704@FreeBSD.org> <70C1942B-8BA3-47D8-BFE4-3DC3B5CAD56C@FreeBSD.org> <20130816150201.GF4972@kib.kiev.ua> To: Konstantin Belousov X-Mailer: Apple Mail (2.1508) Cc: freebsd-current@FreeBSD.org, Dmitry Morozovsky , Jung-uk Kim , Peter Wemm X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 15:41:56 -0000 On Aug 16, 2013, at 17:02, Konstantin Belousov wrote: > On Fri, Aug 16, 2013 at 02:33:29PM +0200, Dimitry Andric wrote: ... >> In contrast, gcc's rules (in contrib/gcc/config/i386/i386.c) are pretty >> straightforward: >> >> /* Compare and exchange was added for 80486. */ >> const int x86_cmpxchg = ~m_386; >> /* Compare and exchange 8 bytes was added for pentium. */ >> const int x86_cmpxchg8b = ~(m_386 | m_486); >> >> So maybe the following is a safe enough solution for now: >> >> Index: usr.bin/svn/svn_private_config.h >> =================================================================== >> --- usr.bin/svn/svn_private_config.h (revision 254300) >> +++ usr.bin/svn/svn_private_config.h (working copy) >> @@ -153,7 +153,9 @@ >> #define SVN_FS_WANT_DB_PATCH 14 >> >> /* Define if compiler provides atomic builtins */ >> +#if !defined(__i386__) || !defined(__i486__) >> #define SVN_HAS_ATOMIC_BUILTINS 1 >> +#endif > I do not understand this. Isn't __i386__ defined always when compiling > for 32bit x86 ? > > The !defined(__i486__) part assumes that any other cpu variation supported > by compiler has cmpxchg8b. Yes, that was the intention. So if it is i386 arch, but the CPU isn't i486, the builtins can be enabled. This is the same logic that gcc itself uses. It only breaks down when compiling with -mcpu=i386 though, but I don't think we support that anymore? The ifdef was just the negation of: #if defined(__i386__) && defined(__i486__) #undef SVN_HAS_ATOMIC_BUILTINS #endif -Dimitry