mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: SIMONE MIONE <205212@studenti.unimore.it>
Cc: noloader@gmail.com, musl@lists.openwall.com
Subject: Re: [musl] musl how to use hard float with aarch64-none-elf-gcc
Date: Tue, 1 Mar 2022 08:10:38 -0500	[thread overview]
Message-ID: <20220301131037.GF7074@brightrain.aerifal.cx> (raw)
In-Reply-To: <CAOUaTh-JMF6BK8_U2KTiMjOTubBTAbnjwYU-tyy8z=B9oDb8kA@mail.gmail.com>

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@libc.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@libc.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@gmail.com>
> > > > > ha scritto:
> > > > >
> > > > > > On Wed, Feb 16, 2022 at 6:29 AM Szabolcs Nagy <nsz@port70.net>
> > wrote:
> > > > > > >
> > > > > > > * Jeffrey Walton <noloader@gmail.com> [2022-02-16 05:24:48
> > -0500]:
> > > > > > > > On Wed, Feb 16, 2022 at 4:51 AM SIMONE MIONE <
> > > > > > 205212@studenti.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
> > > > > >
> > > >
> >

  reply	other threads:[~2022-03-01 13:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-16  9:50 SIMONE MIONE
2022-02-16 10:24 ` Jeffrey Walton
2022-02-16 11:29   ` Szabolcs Nagy
2022-02-16 11:32     ` Jeffrey Walton
2022-02-16 11:59       ` SIMONE MIONE
2022-02-16 14:57         ` Rich Felker
2022-02-25 15:21           ` SIMONE MIONE
2022-02-25 16:41             ` Damian McGuckin
2022-02-25 16:48               ` SIMONE MIONE
2022-02-25 18:01             ` Rich Felker
2022-03-01  8:36               ` SIMONE MIONE
2022-03-01 13:10                 ` Rich Felker [this message]
2022-03-25  9:08                   ` SIMONE MIONE

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220301131037.GF7074@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=205212@studenti.unimore.it \
    --cc=musl@lists.openwall.com \
    --cc=noloader@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).