Re: [PATCH v3] newlib: add dummy implementations of fe{get, set}prec for Aarch64 Cygwin

Corinna Vinschen <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Jul  4 15:49, Radek Barton wrote:
> Hello.
> 
> Sending a new version of the patch that combines both suggestions.

LGTM, Richard?

Thanks,
Corinna


> 
> Radek
> 
> ---
> >From 87aebf36fca923569554b7d95adb4eb5d6c7d8c6 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Radek=20Barto=C5=88?= <[email protected]>
> Date: Thu, 3 Jul 2025 12:02:03 +0200
> Subject: [PATCH v3] newlib: add dummy implementations of fe{get,set}prec
>  for Aarch64 Cygwin
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> 
> This patch introduces dummy implementation of fegetprec and fsetprec for Cygwin
> build as those symbols are being exported by cygwin1.dll and AArch64 do not support
> changing floating point precision at runtime.
> 
> Signed-off-by: Radek Bartoň <[email protected]>
> ---
>  newlib/Makefile.in                       | 40 ++++++++++++++++++++++++
>  newlib/libc/machine/aarch64/sys/fenv.h   | 15 +++++++++
>  newlib/libm/machine/aarch64/Makefile.inc |  2 ++
>  newlib/libm/machine/aarch64/fegetprec.c  | 17 ++++++++++
>  newlib/libm/machine/aarch64/fesetprec.c  | 22 +++++++++++++
>  5 files changed, 96 insertions(+)
>  create mode 100644 newlib/libm/machine/aarch64/fegetprec.c
>  create mode 100644 newlib/libm/machine/aarch64/fesetprec.c
> 
> diff --git a/newlib/Makefile.in b/newlib/Makefile.in
> index 5a1987bdd..f1b2252ad 100644
> --- a/newlib/Makefile.in
> +++ b/newlib/Makefile.in
> @@ -3251,11 +3251,13 @@ am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-feclearexcept.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fegetenv.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fegetexceptflag.$(OBJEXT) \
> +@HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fegetprec.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fegetround.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-feholdexcept.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-feraiseexcept.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fesetenv.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fesetexceptflag.$(OBJEXT) \
> +@HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fesetprec.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fesetround.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT)
> @@ -5086,11 +5088,13 @@ libm_test_test_LDADD = $(CRT0) libm.a libc.a
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/feclearexcept.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fegetenv.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fegetexceptflag.c \
> +@HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fegetprec.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fegetround.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/feholdexcept.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/feraiseexcept.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fesetenv.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fesetexceptflag.c \
> +@HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fesetprec.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fesetround.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/fetestexcept.c \
>  @HAVE_LIBM_MACHINE_AARCH64_TRUE@	libm/machine/aarch64/feupdateenv.c
> @@ -11081,6 +11085,9 @@ libm/machine/aarch64/libm_a-fegetenv.$(OBJEXT):  \
>  libm/machine/aarch64/libm_a-fegetexceptflag.$(OBJEXT):  \
>  	libm/machine/aarch64/$(am__dirstamp) \
>  	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
> +libm/machine/aarch64/libm_a-fegetprec.$(OBJEXT):  \
> +	libm/machine/aarch64/$(am__dirstamp) \
> +	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
>  libm/machine/aarch64/libm_a-fegetround.$(OBJEXT):  \
>  	libm/machine/aarch64/$(am__dirstamp) \
>  	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
> @@ -11096,6 +11103,9 @@ libm/machine/aarch64/libm_a-fesetenv.$(OBJEXT):  \
>  libm/machine/aarch64/libm_a-fesetexceptflag.$(OBJEXT):  \
>  	libm/machine/aarch64/$(am__dirstamp) \
>  	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
> +libm/machine/aarch64/libm_a-fesetprec.$(OBJEXT):  \
> +	libm/machine/aarch64/$(am__dirstamp) \
> +	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
>  libm/machine/aarch64/libm_a-fesetround.$(OBJEXT):  \
>  	libm/machine/aarch64/$(am__dirstamp) \
>  	libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp)
> @@ -14544,12 +14554,14 @@ distclean-compile:
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-feclearexcept.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fegetenv.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fegetexceptflag.Po@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fegetround.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-feholdexcept.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fenv.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-feraiseexcept.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fesetenv.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fesetexceptflag.Po@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fesetround.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-fetestexcept.Po@am__quote@
>  @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-feupdateenv.Po@am__quote@
> @@ -44362,6 +44374,20 @@ libm/machine/aarch64/libm_a-fegetexceptflag.obj: libm/machine/aarch64/fegetexcep
>  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
>  @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fegetexceptflag.obj `if test -f 'libm/machine/aarch64/fegetexceptflag.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fegetexceptflag.c'; fi`
>  
> +libm/machine/aarch64/libm_a-fegetprec.o: libm/machine/aarch64/fegetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fegetprec.o -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Tpo -c -o libm/machine/aarch64/libm_a-fegetprec.o `test -f 'libm/machine/aarch64/fegetprec.c' || echo '$(srcdir)/'`libm/machine/aarch64/fegetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Po
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libm/machine/aarch64/fegetprec.c' object='libm/machine/aarch64/libm_a-fegetprec.o' libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fegetprec.o `test -f 'libm/machine/aarch64/fegetprec.c' || echo '$(srcdir)/'`libm/machine/aarch64/fegetprec.c
> +
> +libm/machine/aarch64/libm_a-fegetprec.obj: libm/machine/aarch64/fegetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fegetprec.obj -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Tpo -c -o libm/machine/aarch64/libm_a-fegetprec.obj `if test -f 'libm/machine/aarch64/fegetprec.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fegetprec.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fegetprec.c'; fi`
> +@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fegetprec.Po
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libm/machine/aarch64/fegetprec.c' object='libm/machine/aarch64/libm_a-fegetprec.obj' libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fegetprec.obj `if test -f 'libm/machine/aarch64/fegetprec.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fegetprec.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fegetprec.c'; fi`
> +
>  libm/machine/aarch64/libm_a-fegetround.o: libm/machine/aarch64/fegetround.c
>  @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fegetround.o -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fegetround.Tpo -c -o libm/machine/aarch64/libm_a-fegetround.o `test -f 'libm/machine/aarch64/fegetround.c' || echo '$(srcdir)/'`libm/machine/aarch64/fegetround.c
>  @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fegetround.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fegetround.Po
> @@ -44432,6 +44458,20 @@ libm/machine/aarch64/libm_a-fesetexceptflag.obj: libm/machine/aarch64/fesetexcep
>  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
>  @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fesetexceptflag.obj `if test -f 'libm/machine/aarch64/fesetexceptflag.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fesetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fesetexceptflag.c'; fi`
>  
> +libm/machine/aarch64/libm_a-fesetprec.o: libm/machine/aarch64/fesetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fesetprec.o -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Tpo -c -o libm/machine/aarch64/libm_a-fesetprec.o `test -f 'libm/machine/aarch64/fesetprec.c' || echo '$(srcdir)/'`libm/machine/aarch64/fesetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Po
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libm/machine/aarch64/fesetprec.c' object='libm/machine/aarch64/libm_a-fesetprec.o' libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fesetprec.o `test -f 'libm/machine/aarch64/fesetprec.c' || echo '$(srcdir)/'`libm/machine/aarch64/fesetprec.c
> +
> +libm/machine/aarch64/libm_a-fesetprec.obj: libm/machine/aarch64/fesetprec.c
> +@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fesetprec.obj -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Tpo -c -o libm/machine/aarch64/libm_a-fesetprec.obj `if test -f 'libm/machine/aarch64/fesetprec.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fesetprec.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fesetprec.c'; fi`
> +@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fesetprec.Po
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libm/machine/aarch64/fesetprec.c' object='libm/machine/aarch64/libm_a-fesetprec.obj' libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-fesetprec.obj `if test -f 'libm/machine/aarch64/fesetprec.c'; then $(CYGPATH_W) 'libm/machine/aarch64/fesetprec.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/fesetprec.c'; fi`
> +
>  libm/machine/aarch64/libm_a-fesetround.o: libm/machine/aarch64/fesetround.c
>  @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/aarch64/libm_a-fesetround.o -MD -MP -MF libm/machine/aarch64/$(DEPDIR)/libm_a-fesetround.Tpo -c -o libm/machine/aarch64/libm_a-fesetround.o `test -f 'libm/machine/aarch64/fesetround.c' || echo '$(srcdir)/'`libm/machine/aarch64/fesetround.c
>  @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libm/machine/aarch64/$(DEPDIR)/libm_a-fesetround.Tpo libm/machine/aarch64/$(DEPDIR)/libm_a-fesetround.Po
> diff --git a/newlib/libc/machine/aarch64/sys/fenv.h b/newlib/libc/machine/aarch64/sys/fenv.h
> index 1f97791a7..369cc4850 100644
> --- a/newlib/libc/machine/aarch64/sys/fenv.h
> +++ b/newlib/libc/machine/aarch64/sys/fenv.h
> @@ -123,6 +123,21 @@ fegetexcept(void)
>  
>  #endif /* __BSD_VISIBLE */
>  
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#ifdef __CYGWIN__
> +
> +#if __MISC_VISIBLE
> +int fegetprec (void);
> +int fesetprec (int __prec);
> +#endif
> +
> +#endif /* __CYGWIN__ */
>  
> +#ifdef __cplusplus
> +}
> +#endif
>  
>  #endif	/* !_FENV_H_ */
> diff --git a/newlib/libm/machine/aarch64/Makefile.inc b/newlib/libm/machine/aarch64/Makefile.inc
> index 478aaeed8..0064363e7 100644
> --- a/newlib/libm/machine/aarch64/Makefile.inc
> +++ b/newlib/libm/machine/aarch64/Makefile.inc
> @@ -33,11 +33,13 @@
>  	%D%/feclearexcept.c \
>  	%D%/fegetenv.c \
>  	%D%/fegetexceptflag.c \
> +	%D%/fegetprec.c \
>  	%D%/fegetround.c \
>  	%D%/feholdexcept.c \
>  	%D%/feraiseexcept.c \
>  	%D%/fesetenv.c \
>  	%D%/fesetexceptflag.c \
> +	%D%/fesetprec.c \
>  	%D%/fesetround.c \
>  	%D%/fetestexcept.c \
>  	%D%/feupdateenv.c
> diff --git a/newlib/libm/machine/aarch64/fegetprec.c b/newlib/libm/machine/aarch64/fegetprec.c
> new file mode 100644
> index 000000000..82e08fb96
> --- /dev/null
> +++ b/newlib/libm/machine/aarch64/fegetprec.c
> @@ -0,0 +1,17 @@
> +#if defined(__CYGWIN__)
> +
> +/* Returns the currently selected precision, represented by one of the
> +   values of the defined precision macros. */
> +int
> +fegetprec (void)
> +{
> +  /* AArch64 doesn't have configurable precision.
> +     Return a fixed value indicating double precision (most common). */
> +  return -1;
> +}
> +
> +#else
> +
> +#include "../../fenv/fenv_stub.c"
> +
> +#endif
> diff --git a/newlib/libm/machine/aarch64/fesetprec.c b/newlib/libm/machine/aarch64/fesetprec.c
> new file mode 100644
> index 000000000..dd507001c
> --- /dev/null
> +++ b/newlib/libm/machine/aarch64/fesetprec.c
> @@ -0,0 +1,22 @@
> +#if defined(__CYGWIN__)
> +
> +/* http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm:
> +
> +   The fesetprec function establishes the precision represented by its
> +   argument prec.  If the argument does not match a precision macro, the
> +   precision is not changed.
> +
> +   The fesetprec function returns a nonzero value if and only if the
> +   argument matches a precision macro (that is, if and only if the requested
> +   precision can be established). */
> +int
> +fesetprec (int prec)
> +{
> +  /* Aarch64 doesn't support changing precision at runtime. */
> +  return 0; // return failure
> +}
> +#else
> +
> +#include "../../fenv/fenv_stub.c"
> +
> +#endif
> -- 
> 2.49.0.vfs.0.4
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.