From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: Preliminary 'wip-armhf' branch pushed Date: Thu, 01 Jan 2015 02:11:19 -0500 Message-ID: <87oaqj5620.fsf@netris.org> References: <87lhln7mlk.fsf@netris.org> <20141231174719.GA8456@intra> <878uhn7he5.fsf@netris.org> <20141231202012.GA23085@jocasta.intra> <87vbkr5qxk.fsf@netris.org> <20150101061436.GA3785@intra> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35075) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y6ZuR-0005Nt-Jp for guix-devel@gnu.org; Thu, 01 Jan 2015 02:11:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y6ZuO-0004Sa-Aq for guix-devel@gnu.org; Thu, 01 Jan 2015 02:11:03 -0500 Received: from world.peace.net ([50.252.239.5]:59105) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y6ZuO-0004QL-7A for guix-devel@gnu.org; Thu, 01 Jan 2015 02:11:00 -0500 In-Reply-To: <20150101061436.GA3785@intra> (John Darrington's message of "Thu, 1 Jan 2015 07:14:36 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: John Darrington Cc: guix-devel@gnu.org John Darrington writes: > On Wed, Dec 31, 2014 at 06:40:23PM -0500, Mark H Weaver wrote: > > * You added "CFLAGS=-Wno-cast-qual" and "--disable-werror" for ARM in > 'gcc-configure-flags-for-triplet', which I thought was a bad idea and > didn't belong there. > > Have you tried actually building GCC ? Yes, I've built several GCCs including gcc-final. I've also successfully built the 'hello' package. > I found that without those, it failed to build. Perhaps the problem you ran into was fixed in GCC 4.8.4. > * You patched gcc/config/arm/linux-eabi.h unnecessarily. > > Without that patch, GCC actually builds soft-float code, even though > you may have passed the --with-float=hard flag. What bits of that > patch do you think are not necessary? All of it seems to be unnecessary, by experiment. I've used the resulting GCC to compile the following test program: --8<---------------cut here---------------start------------->8--- #include double foo (double a, double b) { return sinh(a * b); } --8<---------------cut here---------------end--------------->8--- Compiled with "/gnu/store/.../bin/gcc -O2 -S foo.c", here's the resulting foo.s: --8<---------------cut here---------------start------------->8--- .syntax unified .arch armv7-a .eabi_attribute 27, 3 .eabi_attribute 28, 1 .fpu vfpv3-d16 .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 2 .eabi_attribute 34, 1 .eabi_attribute 18, 4 .thumb .file "foo.c" .text .align 2 .global foo .thumb .thumb_func .type foo, %function foo: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. fmuld d0, d0, d1 b sinh .size foo, .-foo .ident "GCC: (GNU) 4.8.4" .section .note.GNU-stack,"",%progbits --8<---------------cut here---------------end--------------->8--- 'foo' accepts the double arguments via registers and passes a double to sinh via registers. I also checked a variant that simply returned a*b, and it was clearly returning the result via register as well. I think it's quite clear that this is using the hard-float ABI, no? Mark