Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 1 Mar 2022 09:36:44 +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

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?

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?

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.