commit 3661261f breaks arm64

Message ID 20150128183359.GG4278@bivouac.eciton.net
State New
Headers show

Commit Message

Leif Lindholm Jan. 28, 2015, 6:33 p.m.
commit 3661261fe17a8fe19681073889b5b36ec1ee823d,
"Always add -msoft-float to avoid compiler generating float
arithmetics." breaks the arm64 build.

-msoft-float is not a valid command line option for aarch64 (as far as
I can see, it is technically a target-specific option which just
happens to exist for most targets - including arm).

This setting will need to be conditionalised somehow.
An option that works for arm64 is -march=armv8-a+nofp+nosimd.

Would something like this be an acceptable workaround?:

 # By default, GCC 4.4 generates .eh_frame sections containing unwind
 # information in some cases where it previously did not. GRUB doesn't
 # need

/
    Leif

Comments

Leif Lindholm Jan. 28, 2015, 7:36 p.m. | #1
On Wed, Jan 28, 2015 at 09:58:56PM +0300, Andrei Borzenkov wrote:
> В Wed, 28 Jan 2015 18:33:59 +0000
> Leif Lindholm <leif.lindholm@linaro.org> пишет:
> 
> > commit 3661261fe17a8fe19681073889b5b36ec1ee823d,
> > "Always add -msoft-float to avoid compiler generating float
> > arithmetics." breaks the arm64 build.
> > 
> > -msoft-float is not a valid command line option for aarch64 (as far as
> > I can see, it is technically a target-specific option which just
> > happens to exist for most targets - including arm).
> > 
> > This setting will need to be conditionalised somehow.
> > An option that works for arm64 is -march=armv8-a+nofp+nosimd.
> > 
> > Would something like this be an acceptable workaround?:
> > 
> > diff --git a/configure.ac b/configure.ac
> > index a3bca06..c99e1ea 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -678,7 +678,11 @@ fi
> >  # that floats are a good fit to run instead of what's written in the
> >  # code.
> >  # Given that floating point unit is disabled (if present to begin
> >  # with)
> >  # when GRUB is running which may result in various hard crashes.
> > -TARGET_CFLAGS="$TARGET_CFLAGS -msoft-float"
> > +if ( test "x$target_cpu" = xarm64 ); then
> 
> Why subshell?

Brainless cargo culting to look similar to the preceding $target_cpu
checker, which actually does something relevant with its subshell.

If I drop that, is that an acceptable fix?
 
> > +  TARGET_CFLAGS="$TARGET_CFLAGS -march=armv8-a+nofp+nosimd"
> > +else
> > +  TARGET_CFLAGS="$TARGET_CFLAGS -msoft-float"
> > +fi
> >  
> >  # By default, GCC 4.4 generates .eh_frame sections containing unwind
> >  # information in some cases where it previously did not. GRUB doesn't
> >  # need
> > 
> > /
> >     Leif
> > 
> > _______________________________________________
> > Grub-devel mailing list
> > Grub-devel@gnu.org
> > https://lists.gnu.org/mailman/listinfo/grub-devel
>
Leif Lindholm Jan. 28, 2015, 8:48 p.m. | #2
On Wed, Jan 28, 2015 at 08:39:43PM +0100, Vladimir 'phcoder' Serbinenko wrote:
> > > Why subshell?
> >
> > Brainless cargo culting to look similar to the preceding $target_cpu
> > checker, which actually does something relevant with its subshell.
> >
> > If I drop that, is that an acceptable fix?
> Yes.
> I probably should define guidelines for platform-specific options and clean
> up existing inconsistencies but it's low priority.

Thanks - pushed.

/
    Leif

Patch hide | download patch | download mbox

diff --git a/configure.ac b/configure.ac
index a3bca06..c99e1ea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -678,7 +678,11 @@  fi
 # that floats are a good fit to run instead of what's written in the
 # code.
 # Given that floating point unit is disabled (if present to begin
 # with)
 # when GRUB is running which may result in various hard crashes.
-TARGET_CFLAGS="$TARGET_CFLAGS -msoft-float"
+if ( test "x$target_cpu" = xarm64 ); then
+  TARGET_CFLAGS="$TARGET_CFLAGS -march=armv8-a+nofp+nosimd"
+else
+  TARGET_CFLAGS="$TARGET_CFLAGS -msoft-float"
+fi