|
Message-ID: <CAOUaTh9-gfAzcJQwDncEnosAO0vGuCeJAZ=QAN1YkS2imjg00w@mail.gmail.com>
Date: Fri, 25 Mar 2022 10:08:27 +0100
From: SIMONE MIONE <205212@...denti.unimore.it>
To: Rich Felker <dalias@...c.org>
Cc: noloader@...il.com, musl@...ts.openwall.com
Subject: Re: musl how to use hard float with aarch64-none-elf-gcc
Thank you, I have fix that with your hints. Musl couldn't find libgcc.a
from my toolchain, so I have "manually" added it and it worked fine!
Il giorno mar 1 mar 2022 alle ore 14:10 Rich Felker <dalias@...c.org> ha
scritto:
> On Tue, Mar 01, 2022 at 09:36:44AM +0100, SIMONE MIONE wrote:
> > My problem is I don't know how to implement such functions. I mean,
> > functions like "__extenddftf2" and so on.
> > Does someone know how to do that? Does someone have some reference I can
> > check to implement those functions?
>
> They come from the compiler runtime -- part of the compiler's contract
> in generating calls to these functions to implement floating point
> arithmetic is that it will *provide* them. This is via libgcc.a if
> you're using gcc, or compiler-rt if you're using clang/LLVM. Other
> compilers should either document that they expect you to use one of
> these or provide their own (for example, PCC has its own).
>
> > I already have integrated newlib into my system and I didn't have these
> > issues. Now I want to integrate musl but I can't because of this. What
> am I
> > missing?
>
> It could be that configure didn't detect "LIBCC" correctly for you, or
> that you're building in some way not using the configure script in
> which case you'll need to make sure it's set. There's nothing
> OS/distro-specific about these functions so, short of having something
> else, you can just use libgcc.a from an aarch64 gcc toolchain if
> needed.
>
> Rich
>
>
> > Il giorno ven 25 feb 2022 alle ore 19:01 Rich Felker <dalias@...c.org>
> ha
> > scritto:
> >
> > > On Fri, Feb 25, 2022 at 04:21:59PM +0100, SIMONE MIONE wrote:
> > > > And what if I don't want quad precision?
> > >
> > > Then you don't have to use it, but at least some minimal amount of the
> > > support code for it will be linked if you're using printf, since
> > > linking can't see what format strings you're using with printf.
> > >
> > > > I mean, when I try to print a float, vfprintf casts the float to a
> double
> > > > (and that's ok), but it seems like musl uses double as long double,
> so it
> > > > tries to cast the double to long double.
> > > > Is it true?
> > >
> > > Yes, the vfprintf converts all types up to the largest width/precision
> > > one when loading them so that there are not duplicate code paths. In
> > > the case of floating point, this is completely inconsequential because
> > > only a very small number of operations are performed on the floating
> > > point type to extract the exponent and mantissa and rounding
> > > direction. After that it's all integer arithmetic. And of course the
> > > result is not affected by this because all values of the narrower type
> > > are representable in the wider type (that's the whole point).
> > >
> > > > Can I use a double (or float) as a double precision instead of
> > > > quad precision?
> > >
> > > In short, no. There is no defined or supported ABI for aarch64 like
> > > that.
> > >
> > > In theory it would be possible to define, with assistance from the
> > > tooling (compiler etc), an ABI for aarch64 where long double is just a
> > > copy of double, but I'm unclear what value you'd be hoping to get out
> > > of that. Saving a small amount of .text size?
> > >
> > > Rich
> > >
> > >
> > > > Il giorno mer 16 feb 2022 alle ore 15:57 Rich Felker <
> dalias@...c.org>
> > > ha
> > > > scritto:
> > > >
> > > > > On Wed, Feb 16, 2022 at 12:59:13PM +0100, SIMONE MIONE wrote:
> > > > > > Thank you all for your reply.
> > > > > > I meant when I add musl's lib*.a into my makefile, the compiler
> > > complains
> > > > > > about "undefined reference to __addtf3" (and others). Isn't that
> > > > > > soft-float? Or emulation float?
> > > > >
> > > > > It's the implementation of long double which is IEEE quad in the
> > > > > aarch64 ABI.
> > > > >
> > > > > > My supervisor told me "we already have float implementation so we
> > > don't
> > > > > > need those functions". So I was wondering if I need to disable
> it in
> > > some
> > > > > > way.
> > > > >
> > > > > No, you need them because there is no fpu implementation of quad.
> > > > >
> > > > >
> > > > > > Il giorno mer 16 feb 2022 alle ore 12:32 Jeffrey Walton <
> > > > > noloader@...il.com>
> > > > > > ha scritto:
> > > > > >
> > > > > > > On Wed, Feb 16, 2022 at 6:29 AM Szabolcs Nagy <nsz@...t70.net>
> > > wrote:
> > > > > > > >
> > > > > > > > * Jeffrey Walton <noloader@...il.com> [2022-02-16 05:24:48
> > > -0500]:
> > > > > > > > > On Wed, Feb 16, 2022 at 4:51 AM SIMONE MIONE <
> > > > > > > 205212@...denti.unimore.it> wrote:
> > > > > > > > > >
> > > > > > > > > > I am trying to integrate musl in a baremetal
> environment. I
> > > > > already
> > > > > > > have float support but I can't manage to disable soft-float by
> > > musl.
> > > > > > > > > >
> > > > > > > > > > I configure with:
> > > > > > > > > > ./configure --target=aarch64-none-elf --enable-debug
> > > > > --disable-shared
> > > > > > > > > > And simple compile with:
> > > > > > > > > > make
> > > > > > > > > >
> > > > > > > > > > Does anyone know how to use hardfloat instead of soft
> float?
> > > Is
> > > > > > > there any option or flag? Thank you
> > > > > > > > >
> > > > > > > > > The GCC options for hard-floats are -mfpu=neon
> > > -mfloat-abi=hard. In
> > > > > > > > > later versions of GCC, you can also use -mfpu=auto
> (sometimes).
> > > > > > > >
> > > > > > > > that's for 32bit arm
> > > > > > > >
> > > > > > > > there is no soft float abi for aarch64, so i'm not sure
> what's
> > > going
> > > > > on.
> > > > > > >
> > > > > > > Oh, you're right My bad. I did not notice it was Aarch64.
> > > > > > >
> > > > > > > Jeff
> > > > > > >
> > > > >
> > >
>
Content of type "text/html" skipped
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.