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

[-- Attachment #1: Type: text/plain, Size: 5698 bytes --]

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@libc.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@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
> > > > > > >
> > > > >
> > >
>

[-- Attachment #2: Type: text/html, Size: 8197 bytes --]

      reply	other threads:[~2022-03-25  9:08 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
2022-03-25  9:08                   ` SIMONE MIONE [this message]

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='CAOUaTh9-gfAzcJQwDncEnosAO0vGuCeJAZ=QAN1YkS2imjg00w@mail.gmail.com' \
    --to=205212@studenti.unimore.it \
    --cc=dalias@libc.org \
    --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).