fenv() support broken with GCC 10 on ARM
Eshan Dhawan
eshandhawan51@gmail.com
Wed Jul 8 17:42:41 GMT 2020
On Wed, Jul 8, 2020 at 10:57 PM Sebastian Huber <
sebastian.huber@embedded-brains.de> wrote:
> On 08/07/2020 15:00, Sebastian Huber wrote:
>
> > Hello,
> >
> > I get the following linker errors with GCC and the latest Newlib on ARM:
> >
> > /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/bin/ld:
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-vfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:61:
>
> > multiple definition of `__softfloat_float_rounding_mode';
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-softfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:61:
>
> > first defined here
> > /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/bin/ld:
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-vfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:60:
>
> > multiple definition of `__softfloat_float_exception_mask';
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-softfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:60:
>
> > first defined here
> > /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/bin/ld:
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-vfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:59:
>
> > multiple definition of `__softfloat_float_exception_flags';
> >
> /build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-softfp.o):/scratch/git-rtems-source-builder/rtems/build/arm-rtems6-gcc-50666d2-newlib-f095752-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m3/newlib/targ-include/machine/fenv-softfloat.h:59:
>
> > first defined here
>
>
Could you tell the the Newlib configurations you used
So I could regenerate the issue :)
-Eshan
> Affected are ARM and MIPS:
>
> grep -r 'int __softfloat_float_' .
> newlib/libc/machine/arm/machine/fenv-softfloat.h:int
> __softfloat_float_exception_flags;
> newlib/libc/machine/arm/machine/fenv-softfloat.h:int
> __softfloat_float_exception_mask;
> newlib/libc/machine/arm/machine/fenv-softfloat.h:int
> __softfloat_float_rounding_mode;
> newlib/libc/machine/mips/machine/fenv-softfloat.h:int
> __softfloat_float_exception_flags;
> newlib/libc/machine/mips/machine/fenv-softfloat.h:int
> __softfloat_float_exception_mask;
> newlib/libc/machine/mips/machine/fenv-softfloat.h:int
> __softfloat_float_rounding_mode;
>
> There needs to be a declaration only in the header file and a definition
> somewhere else.
More information about the Newlib
mailing list