This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v4 00/13] port C-SKY to glibc
On Thu, Sep 13, 2018 at 12:36:15PM +0000, Joseph Myers wrote:
> A different dynamic linker name should be used because the ABI to libc and
> other glibc libraries is incompatible; if you have a different dynamic
> linker name for every ABI, that allows distributions using Debian-style
> multiarch directory arrangements to have libraries for both ABIs installed
> simultaneously. Then, because you can't sensibly use soft-float binaries
> with hard-float libm, you should have the conditionals in bits/fenv.h (a
> single installed header should be set up to work for both ABIs) so that it
> doesn't define macros for unsupported features for soft float.
>
> Once you have the conditionals in bits/fenv.h, the glibc testsuite will
> automatically disable tests for unsupported features for soft float, and
> internal calls to fenv.h functions within libm will automatically be
> optimized out for soft float.
>
OK. I've add different dynamic linker name name for hard-float and put
some conditionals in bits/fenv.h, seems work fine.
> It's not required, but it's a good idea to make binutils check for ABI
> incompatibilities at static link time, using GNU object attributes, which
> GCC should generate based on the ABI selected when compiling. See how
> powerpc and mips handle this, for example. That helps protect against
> user mistakes (linking .o files for different ABIs together) by making the
> linker complain about such mixing.
OK. I'll try to add some check here.
> The Argument Passing section of the ABI document you provided doesn't seem
> to say anything about the different argument passing for hard float, so I
> think you need to update the document to cover that issue (likewise for
> return values if they are handled differently for hard float). (And the
> table in 2.2.1.2 would presumably also need to say what's used for
> argument passing.)
OK. We will update it.
> We want the build-many-glibcs.py build to succeed. You'll need to
> investigate why you see this problem. The -profile option is defined in
> gcc/config/gnu-user.opt which all *-linux* targets should be using, so
> you'll need to look at why you get an error there.
>
> > > > 5. The following cases fail due to gcc optimize change the sequence of
> > > > -a * b to -(a * b) and got 1ulps error.
> > > > math/test-double-tgamma
> > > > math/test-float-tgamma
> > > > math/test-float32-tgamma
> > > > math/test-float32x-tgamma
> > > > math/test-float64-tgamma
> > > > math/test-ldouble-tgamma
>
> No, you just need to get a fix for the problem checked in upstream; no
> need to file a bug in GCC Bugzilla.
OK. My colleague Xianmiao Qu is working on these problems, will be fixed soon.
Thanks,
Han Mao