Re: regression in tgamma?

Paul Zimmermann <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
       Hi Jeff,

thank you for your answer. Here are the steps I followed to compile Newlib
(thanks Alexei Sibidanov):

# from newlib-3.3.0 or newlib-4.0.0
mkdir build
cd build
../configure --prefix=`pwd` --target=x86_64
# perform the following in $HOME/bin
ln -sf `which ar` x86_64-ar
ln -sf `which as` x86_64-as
ln -sf `which cc` x86_64-cc
ln -sf `which gcc` x86_64-gcc
ln -sf `which c++` x86_64-c++
ln -sf `which ld` x86_64-ld
ln -sf `which nm` x86_64-nm
ln -sf `which objdump` x86_64-objdump
ln -sf `which objcopy` x86_64-objcopy
ln -sf `which ranlib` x86_64-ranlib
ln -sf `which readelf` x86_64-readelf
ln -sf `which strip` x86_64-strip
make # it will fail but it is ok
cd x86_64/newlib/libm
make # fails too
cd tmp
ar cr libm.a *.o

If you have access to the GCC Compile Farm [1], you can reproduce on gcc67:

$ cd /home/zimmerma
$ gcc -DNEWLIB -no-pie test3.c newlib-3.3.0/build/x86_64/newlib/libm/tmp/libm.a
$ ./a.out 
x=-0x1.53f198fe3b278p+7 y=0x1.fd6d312572d9cp-1015
$ gcc -DNEWLIB -no-pie test3.c newlib-4.0.0/build/x86_64/newlib/libm/tmp/libm.a
$ ./a.out 
x=-0x1.53f198fe3b278p+7 y=0x1p+0

If you have a simpler way to compile Newlib, please tell me.

Best regards,
Paul

[1] https://gcc.gnu.org/wiki/CompileFarm#List_of_machines

> From: Jeff Johnston <[email protected]>
> Date: Tue, 15 Dec 2020 12:11:25 -0500
> 
> Hi Paul,
> 
> I copied the newlib/libm/common directory and header files from master to a
> separate directory and called __ieee754_tgamma directly in your test (adding
> a declaration of __ieee754_tgamma as well).  I then built as follows:
> 
> gcc -g -O0 -I. -DNEWLIB  testtgamma.c e_tgamma.c e_exp.c k_sin.c math_err.c
> er_lgamma.c k_cos.c s_floor.c e_log.c w_log.c
> 
> I get the same result as you get for 3.3.0. 
> 
> Can you possibly recheck to see if your 4.0.0 library has been built
> correctly?  Perhaps I have somehow by-passed the cause of the problem by
> compiling directly.
> 
> -- Jeff J.
> 
> On Tue, Dec 15, 2020 at 8:36 AM Paul Zimmermann <[email protected]>
> wrote:
> 
>         Hi,
> 
>  while updating my comparison from Newlib 3.3.0 to Newlib 4.0.0, I found
>  a
>  regression in tgamma on x86_64/Linux:
> 
>  $ cat test3.c
>  #include <stdio.h>
>  #include <math.h>
> 
>  #ifdef NEWLIB
>  int errno;
>  int* __errno () { return &errno; }
>  #endif
> 
>  int main()
>  {
>    double x = -0x1.53f198fe3b278p+7, y;
>    y = tgamma (x);
>    printf ("x=%a y=%a\n", x, y);
>  }
> 
>  Newlib 3.3.0:
>  $ gcc -DNEWLIB -no-pie test3.c /localdisk/zimmerma/newlib-3.3.0/libm.a;
>  ./a.out
>  x=-0x1.53f198fe3b278p+7 y=0x1.fd6d312572d9cp-1015
> 
>  Newlib 4.0.0:
>  $ gcc -DNEWLIB -no-pie test3.c /localdisk/zimmerma/newlib-4.0.0/libm.a;
>  ./a.out
>  x=-0x1.53f198fe3b278p+7 y=0x1p+0
> 
>  Please can someone confirm?
> 
>  Best regards,
>  Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.