Re: [PATCH] Remove multiple defination error

Eric Bresie via Newlib <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <1205787e-7423-4387-875e-bc4ad312e25f@Erics-iPhone-X>
Just wanted to confirm in the below cases...

Is it suppose to do both vfp and softfp operations when #ifndef SOFTFP_ABI or should it be one or the other?

Eric Bresie
[email protected]
> On July 10, 2020 at 5:41:09 PM CDT, Eshan dhawan via Newlib <[email protected]> wrote:
> Signed-off-by: Eshan dhawan <[email protected]>
> ---
> newlib/libm/machine/arm/fenv-vfp.c | 7 ++++-
> newlib/libm/machine/arm/fenv.c | 47 +++++++++++++++++++-----------
> 2 files changed, 36 insertions(+), 18 deletions(-)
>
>
> static int
> __softfp_round_to_vfp(int round)
> @@ -171,8 +170,9 @@ __softfp_round_from_vfp(int round)
> int feclearexcept(int excepts)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_feclearexcept(excepts);
> +#endif
> __softfp_feclearexcept(excepts);
>
> return (0);
> @@ -183,8 +183,9 @@ int fegetexceptflag(fexcept_t *flagp, int excepts)
> fexcept_t __vfp_flagp;
>
> __vfp_flagp = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_fegetexceptflag(&__vfp_flagp, excepts);
> +#endif
> __softfp_fegetexceptflag(flagp, excepts);
>
> *flagp |= __vfp_flagp;
> @@ -195,8 +196,9 @@ int fegetexceptflag(fexcept_t *flagp, int excepts)
> int fesetexceptflag(const fexcept_t *flagp, int excepts)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_fesetexceptflag(flagp, excepts);
> +#endif
> __softfp_fesetexceptflag(flagp, excepts);
>
> return (0);
> @@ -205,8 +207,9 @@ int fesetexceptflag(const fexcept_t *flagp, int excepts)
> int feraiseexcept(int excepts)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_feraiseexcept(excepts);
> +#endif
> __softfp_feraiseexcept(excepts);
>
> return (0);
> @@ -217,8 +220,9 @@ int fetestexcept(int excepts)
> int __got_excepts;
>
> __got_excepts = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __got_excepts = __vfp_fetestexcept(excepts);
> +#endif
> __got_excepts |= __softfp_fetestexcept(excepts);
>
> return (__got_excepts);
> @@ -227,16 +231,18 @@ int fetestexcept(int excepts)
> int fegetround(void)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> return __softfp_round_from_vfp(__vfp_fegetround());
> +#endif
> return __softfp_fegetround();
> }
>
> int fesetround(int round)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_fesetround(__softfp_round_to_vfp(round));
> +#endif
> __softfp_fesetround(round);
>
> return (0);
> @@ -247,8 +253,9 @@ int fegetenv(fenv_t *envp)
> fenv_t __vfp_envp;
>
> __vfp_envp = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_fegetenv(&__vfp_envp);
> +#endif
> __softfp_fegetenv(envp);
> *envp |= __vfp_envp;
>
> @@ -260,8 +267,9 @@ int feholdexcept(fenv_t *envp)
> fenv_t __vfp_envp;
>
> __vfp_envp = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_feholdexcept(&__vfp_envp);
> +#endif
> __softfp_feholdexcept(envp);
> *envp |= __vfp_envp;
>
> @@ -271,8 +279,9 @@ int feholdexcept(fenv_t *envp)
> int fesetenv(const fenv_t *envp)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_fesetenv(envp);
> +#endif
> __softfp_fesetenv(envp);
>
> return (0);
> @@ -281,8 +290,9 @@ int fesetenv(const fenv_t *envp)
> int feupdateenv(const fenv_t *envp)
> {
>
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __vfp_feupdateenv(envp);
> +#endif
> __softfp_feupdateenv(envp);
>
> return (0);
> @@ -293,8 +303,9 @@ int feenableexcept(int __mask)
> int __unmasked;
>
> __unmasked = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __unmasked = __vfp_feenableexcept(__mask);
> +#endif
> __unmasked |= __softfp_feenableexcept(__mask);
>
> return (__unmasked);
> @@ -305,8 +316,9 @@ int fedisableexcept(int __mask)
> int __unmasked;
>
> __unmasked = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __unmasked = __vfp_fedisableexcept(__mask);
> +#endif
> __unmasked |= __softfp_fedisableexcept(__mask);
>
> return (__unmasked);
> @@ -317,8 +329,9 @@ int fegetexcept(void)
> int __unmasked;
>
> __unmasked = 0;
> - if (_libc_arm_fpu_present)
> +#ifndef SOFTFP_ABI
> __unmasked = __vfp_fegetexcept();
> +#endif
> __unmasked |= __softfp_fegetexcept();
>
> return (__unmasked);
> --
> 2.17.1
>
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.