Please go ahead. For some reason I thought there was some outstanding comment. -- Jeff J. On Mon, May 15, 2023 at 5:36 PM Joel Sherrill wrote: > This has been sitting for 10 days (two weekends) and has no comments? Is it > OK to merge now? > > Thanks. > > --joel > > On Fri, May 5, 2023 at 1:39 PM Jennifer Averett < > jennifer.averett@oarcorp.com> wrote: > > > Patch v3 1/3 - Used RTEMS modified . This was based upon > > Freebsd version but modified to work with 16-bit targets. > > Patch v3 2/3 - Includes were added to resolve cygwin errors. > > Patch v3 3/3 - autogenerated newlib.hin was removed. > > > > The attached set of patches add long double support for i386, aarch64 and > > x86_64. The riscv and powerpc are supported by FreeBSD but will need > more > > work to be supported by newlib. FreeBSD has separate 64 and 32 bit > powerpc > > support which would have to be integrated for newlib. FreeBSD riscv > support > > is 64 and there are issues with fenv.h that would have to be addressed. > > > > The first patch is FreeBSD source. Most of the source resides in three > > directories ld, ld128, and ld80. These contain the long double methods. > > The ld128 and ld80 are enabled based on the architecture. I also added > > the FreeBSD sys/endian.h file which was required to build. Finally, an > > architecture machine/_fpmath.h file was copied from FreeBSD for each > > architecture the methods are to be built with. The existence of this > file > > is used to trigger the FreeBSD long double math methods to build. If the > > architecture does not have _fpmath.h the LDBL_EQ_DBL files are built > > instead. > > > > The second patch contains the modifications necessary to build in newlib. > > In FreeBSD some header files from any of the three directories are > visible > > to > > all the source files. The include statements were modified so the header > > file was pulled from the required directory (e.g, “file.h” was changed to > > “ld/file.h”). The files invtrig.h and k_expl.h were created in the ld > > directory and conditionally include either the ld128 or the ld80 version > of > > that header file. If the configure/makefile magic were changed it might > be > > possible to adjust the include arguments to the compiler rather than the > > include statements. > > > > Also in the second patch, some of the _fpmath.h and a couple of the > source > > files > > unsigned long and unsigned int were changed to fixed width types so > > different > > sized unsigned long could be accommodated. The FreeBSD files > > s_nearbyint.c, > > s_fdim.c, and scalbln.c contained integer, float and long double > > methods. The int and float methods were removed and the file names were > > changed to s_nearbyintl.c, fdiml.c and scalblnl.c to resolve conflicts. > > > > Finally, defines were add to math.h for the added architectures. > > > > These changes were checked against the FACE Conformance Test Suite. > > > > Jennifer Averett (3): > > newlib: Add FreeBSD files for non LDBL_EQ_DBL support > > newlib: Add non LDBL_EQ_DBL math support for aarch64, i386, and x86_64 > > Regenerated source for adding non LDBL_EQ_DBL > > > > newlib/Makefile.in | 1463 ++++++++++++++++- > > newlib/configure | 16 + > > newlib/libc/acinclude.m4 | 3 + > > newlib/libc/include/math.h | 3 +- > > newlib/libc/include/sys/endian.h | 207 +++ > > newlib/libc/machine/aarch64/machine/_fpmath.h | 64 + > > newlib/libc/machine/i386/machine/_fpmath.h | 56 + > > newlib/libc/machine/x86_64/machine/_fpmath.h | 57 + > > newlib/libm/Makefile.inc | 8 + > > newlib/libm/ld/Makefile.inc | 56 + > > newlib/libm/ld/e_acoshl.c | 89 + > > newlib/libm/ld/e_acosl.c | 87 + > > newlib/libm/ld/e_asinl.c | 77 + > > newlib/libm/ld/e_atan2l.c | 120 ++ > > newlib/libm/ld/e_atanhl.c | 74 + > > newlib/libm/ld/e_coshl.c | 132 ++ > > newlib/libm/ld/e_fmodl.c | 149 ++ > > newlib/libm/ld/e_lgammal.c | 27 + > > newlib/libm/ld/e_remainderl.c | 40 + > > newlib/libm/ld/e_sinhl.c | 134 ++ > > newlib/libm/ld/fdiml.c | 55 + > > newlib/libm/ld/fpmath.h | 82 + > > newlib/libm/ld/invtrig.h | 34 + > > newlib/libm/ld/k_expl.h | 33 + > > newlib/libm/ld/math_private.h | 941 +++++++++++ > > newlib/libm/ld/s_asinhl.c | 91 + > > newlib/libm/ld/s_atanl.c | 85 + > > newlib/libm/ld/s_cbrtl.c | 143 ++ > > newlib/libm/ld/s_ceill.c | 101 ++ > > newlib/libm/ld/s_copysignl.c | 44 + > > newlib/libm/ld/s_cosl.c | 102 ++ > > newlib/libm/ld/s_fabsl.c | 45 + > > newlib/libm/ld/s_floorl.c | 101 ++ > > newlib/libm/ld/s_fmal.c | 274 +++ > > newlib/libm/ld/s_fmaxl.c | 57 + > > newlib/libm/ld/s_fminl.c | 57 + > > newlib/libm/ld/s_frexpl.c | 64 + > > newlib/libm/ld/s_ilogbl.c | 54 + > > newlib/libm/ld/s_llrintl.c | 9 + > > newlib/libm/ld/s_llroundl.c | 11 + > > newlib/libm/ld/s_logbl.c | 55 + > > newlib/libm/ld/s_lrint.c | 60 + > > newlib/libm/ld/s_lrintl.c | 9 + > > newlib/libm/ld/s_lround.c | 70 + > > newlib/libm/ld/s_lroundl.c | 11 + > > newlib/libm/ld/s_modfl.c | 103 ++ > > newlib/libm/ld/s_nearbyintl.c | 68 + > > newlib/libm/ld/s_nextafterl.c | 80 + > > newlib/libm/ld/s_nexttoward.c | 72 + > > newlib/libm/ld/s_nexttowardf.c | 59 + > > newlib/libm/ld/s_remquol.c | 173 ++ > > newlib/libm/ld/s_rintl.c | 93 ++ > > newlib/libm/ld/s_roundl.c | 64 + > > newlib/libm/ld/s_scalbnl.c | 49 + > > newlib/libm/ld/s_sinl.c | 95 ++ > > newlib/libm/ld/s_tanhl.c | 174 ++ > > newlib/libm/ld/s_tanl.c | 97 ++ > > newlib/libm/ld/s_truncl.c | 68 + > > newlib/libm/ld/scalblnl.c | 63 + > > newlib/libm/ld128/Makefile.inc | 14 + > > newlib/libm/ld128/b_tgammal.c | 57 + > > newlib/libm/ld128/e_lgammal_r.c | 330 ++++ > > newlib/libm/ld128/e_powl.c | 443 +++++ > > newlib/libm/ld128/e_rem_pio2l.h | 135 ++ > > newlib/libm/ld128/invtrig.c | 102 ++ > > newlib/libm/ld128/invtrig.h | 115 ++ > > newlib/libm/ld128/k_cosl.c | 59 + > > newlib/libm/ld128/k_expl.h | 324 ++++ > > newlib/libm/ld128/k_sinl.c | 59 + > > newlib/libm/ld128/s_erfl.c | 329 ++++ > > newlib/libm/ld128/s_exp2l.c | 429 +++++ > > newlib/libm/ld128/s_expl.c | 326 ++++ > > newlib/libm/ld128/s_logl.c | 740 +++++++++ > > newlib/libm/ld80/Makefile.inc | 15 + > > newlib/libm/ld80/b_expl.c | 113 ++ > > newlib/libm/ld80/b_logl.c | 375 +++++ > > newlib/libm/ld80/b_tgammal.c | 422 +++++ > > newlib/libm/ld80/e_lgammal_r.c | 358 ++++ > > newlib/libm/ld80/e_powl.c | 662 ++++++++ > > newlib/libm/ld80/e_rem_pio2l.h | 143 ++ > > newlib/libm/ld80/invtrig.c | 84 + > > newlib/libm/ld80/invtrig.h | 116 ++ > > newlib/libm/ld80/k_cosl.c | 78 + > > newlib/libm/ld80/k_cospil.h | 42 + > > newlib/libm/ld80/k_expl.h | 301 ++++ > > newlib/libm/ld80/k_sinl.c | 62 + > > newlib/libm/ld80/k_sinpil.h | 42 + > > newlib/libm/ld80/s_cospil.c | 129 ++ > > newlib/libm/ld80/s_erfl.c | 337 ++++ > > newlib/libm/ld80/s_exp2l.c | 290 ++++ > > newlib/libm/ld80/s_expl.c | 279 ++++ > > newlib/libm/ld80/s_logl.c | 722 ++++++++ > > newlib/libm/ld80/s_sinpil.c | 140 ++ > > 93 files changed, 14814 insertions(+), 66 deletions(-) > > create mode 100644 newlib/libc/include/sys/endian.h > > create mode 100644 newlib/libc/machine/aarch64/machine/_fpmath.h > > create mode 100644 newlib/libc/machine/i386/machine/_fpmath.h > > create mode 100644 newlib/libc/machine/x86_64/machine/_fpmath.h > > create mode 100644 newlib/libm/ld/Makefile.inc > > create mode 100644 newlib/libm/ld/e_acoshl.c > > create mode 100644 newlib/libm/ld/e_acosl.c > > create mode 100644 newlib/libm/ld/e_asinl.c > > create mode 100644 newlib/libm/ld/e_atan2l.c > > create mode 100644 newlib/libm/ld/e_atanhl.c > > create mode 100644 newlib/libm/ld/e_coshl.c > > create mode 100644 newlib/libm/ld/e_fmodl.c > > create mode 100644 newlib/libm/ld/e_lgammal.c > > create mode 100644 newlib/libm/ld/e_remainderl.c > > create mode 100644 newlib/libm/ld/e_sinhl.c > > create mode 100644 newlib/libm/ld/fdiml.c > > create mode 100644 newlib/libm/ld/fpmath.h > > create mode 100644 newlib/libm/ld/invtrig.h > > create mode 100644 newlib/libm/ld/k_expl.h > > create mode 100644 newlib/libm/ld/math_private.h > > create mode 100644 newlib/libm/ld/s_asinhl.c > > create mode 100644 newlib/libm/ld/s_atanl.c > > create mode 100644 newlib/libm/ld/s_cbrtl.c > > create mode 100644 newlib/libm/ld/s_ceill.c > > create mode 100644 newlib/libm/ld/s_copysignl.c > > create mode 100644 newlib/libm/ld/s_cosl.c > > create mode 100644 newlib/libm/ld/s_fabsl.c > > create mode 100644 newlib/libm/ld/s_floorl.c > > create mode 100644 newlib/libm/ld/s_fmal.c > > create mode 100644 newlib/libm/ld/s_fmaxl.c > > create mode 100644 newlib/libm/ld/s_fminl.c > > create mode 100644 newlib/libm/ld/s_frexpl.c > > create mode 100644 newlib/libm/ld/s_ilogbl.c > > create mode 100644 newlib/libm/ld/s_llrintl.c > > create mode 100644 newlib/libm/ld/s_llroundl.c > > create mode 100644 newlib/libm/ld/s_logbl.c > > create mode 100644 newlib/libm/ld/s_lrint.c > > create mode 100644 newlib/libm/ld/s_lrintl.c > > create mode 100644 newlib/libm/ld/s_lround.c > > create mode 100644 newlib/libm/ld/s_lroundl.c > > create mode 100644 newlib/libm/ld/s_modfl.c > > create mode 100644 newlib/libm/ld/s_nearbyintl.c > > create mode 100644 newlib/libm/ld/s_nextafterl.c > > create mode 100644 newlib/libm/ld/s_nexttoward.c > > create mode 100644 newlib/libm/ld/s_nexttowardf.c > > create mode 100644 newlib/libm/ld/s_remquol.c > > create mode 100644 newlib/libm/ld/s_rintl.c > > create mode 100644 newlib/libm/ld/s_roundl.c > > create mode 100644 newlib/libm/ld/s_scalbnl.c > > create mode 100644 newlib/libm/ld/s_sinl.c > > create mode 100644 newlib/libm/ld/s_tanhl.c > > create mode 100644 newlib/libm/ld/s_tanl.c > > create mode 100644 newlib/libm/ld/s_truncl.c > > create mode 100644 newlib/libm/ld/scalblnl.c > > create mode 100644 newlib/libm/ld128/Makefile.inc > > create mode 100644 newlib/libm/ld128/b_tgammal.c > > create mode 100644 newlib/libm/ld128/e_lgammal_r.c > > create mode 100644 newlib/libm/ld128/e_powl.c > > create mode 100644 newlib/libm/ld128/e_rem_pio2l.h > > create mode 100644 newlib/libm/ld128/invtrig.c > > create mode 100644 newlib/libm/ld128/invtrig.h > > create mode 100644 newlib/libm/ld128/k_cosl.c > > create mode 100644 newlib/libm/ld128/k_expl.h > > create mode 100644 newlib/libm/ld128/k_sinl.c > > create mode 100644 newlib/libm/ld128/s_erfl.c > > create mode 100644 newlib/libm/ld128/s_exp2l.c > > create mode 100644 newlib/libm/ld128/s_expl.c > > create mode 100644 newlib/libm/ld128/s_logl.c > > create mode 100644 newlib/libm/ld80/Makefile.inc > > create mode 100644 newlib/libm/ld80/b_expl.c > > create mode 100644 newlib/libm/ld80/b_logl.c > > create mode 100644 newlib/libm/ld80/b_tgammal.c > > create mode 100644 newlib/libm/ld80/e_lgammal_r.c > > create mode 100644 newlib/libm/ld80/e_powl.c > > create mode 100644 newlib/libm/ld80/e_rem_pio2l.h > > create mode 100644 newlib/libm/ld80/invtrig.c > > create mode 100644 newlib/libm/ld80/invtrig.h > > create mode 100644 newlib/libm/ld80/k_cosl.c > > create mode 100644 newlib/libm/ld80/k_cospil.h > > create mode 100644 newlib/libm/ld80/k_expl.h > > create mode 100644 newlib/libm/ld80/k_sinl.c > > create mode 100644 newlib/libm/ld80/k_sinpil.h > > create mode 100644 newlib/libm/ld80/s_cospil.c > > create mode 100644 newlib/libm/ld80/s_erfl.c > > create mode 100644 newlib/libm/ld80/s_exp2l.c > > create mode 100644 newlib/libm/ld80/s_expl.c > > create mode 100644 newlib/libm/ld80/s_logl.c > > create mode 100644 newlib/libm/ld80/s_sinpil.c > > > > -- > > 2.31.1 > > > > > >