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 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 > 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 > > > wrote: > > > > > > > > > > > > > > > > * Jeffrey Walton [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 > > > > > > > > > > > > > > > >