fenv() support broken with GCC 10 on ARM

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

fenv() support broken with GCC 10 on ARM

Sebastian Huber-4
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

Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Joel Sherrill
Have some of the CPU CPP flags from GCC for soft float vs VFP changed?

What part of the build did this happen in? Is this just with the RSB or did
you have to build more?

Eshan isn't online yet and I will try to duplicate it.

My grep doesn't even find a variable with "rounding" in thenewlib arm fenv
source so I will need to do more to figure this one out.

--joel

On Wed, Jul 8, 2020 at 8:00 AM Sebastian Huber <
[hidden email]> 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
>
>
Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Sebastian Huber-4
In reply to this post by Sebastian Huber-4
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

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.

Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Sebastian Huber-4
On 08/07/2020 19:26, Sebastian Huber 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
>
> 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.

No, this is a different issue. These header files are only included in
source files:

newlib/libm/machine/arm/fenv.c:#include <machine/fenv-softfloat.h>
newlib/libm/machine/mips/fenv.c:#include <machine/fenv-softfloat.h>

On ARM (not in MIPS) this source file is included in two source files:

newlib/libm/machine/arm/fenv-vfp.c:#include "fenv.c"
newlib/libm/machine/arm/fenv-softfp.c:#include "fenv.c"

Does this make sense? I am not sure what the overall logic is supposed
to be.

Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Sourceware - newlib list mailing list
In reply to this post by Sebastian Huber-4
On Wed, Jul 8, 2020 at 10:57 PM Sebastian Huber <
[hidden email]> 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.
Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Sebastian Huber-4
On 08/07/2020 19:42, Eshan Dhawan wrote:

>
>
> On Wed, Jul 8, 2020 at 10:57 PM Sebastian Huber
> <[hidden email]
> <mailto:[hidden email]>> 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 :)

The latest RTEMS 6 RSB. You can also guess it from the output that the
target is arm-rtems6, GCC is 50666d2 and Newlib is f095752.

Reply | Threaded
Open this post in threaded view
|

Re: fenv() support broken with GCC 10 on ARM

Sebastian Huber-4
In reply to this post by Sebastian Huber-4
On 09/07/2020 19:16, Eshan Dhawan wrote:

> Hi Sebastian,
> Could you please tell the steps to recreate the error :)

You have to build a GCC 10 for ARM. For example using the latest RTEMS
Source Builder:

arm-rtems6-gcc --version
arm-rtems6-gcc (GCC) 10.1.1 20200703 (RTEMS 6, RSB
5ab61d2e8c7ced8c685541509a7ac4eba704e69e, Newlib f095752)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Then compile the following test program:

#include <fenv.h>

int main()
{
     return fesetenv( FE_DFL_ENV );
}

arm-rtems6-gcc init.c -mthumb -mcpu=cortex-m3 -lm -Wl,-Map,map.txt
/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
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/bin/ld:
warning: cannot find entry symbol _start; defaulting to 0000000000008000

In the linker map file you will find this dependency chain:

/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv.o)
                               /tmp/cclZauID.o (fesetenv)
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-softfp.o)
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv.o)
(__softfp_feclearexcept)
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv-vfp.o)
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a(lib_a-fenv.o)
(__vfp_feclearexcept)

You have the following symbols:

nm
/build/rtems/6/lib/gcc/arm-rtems6/10.1.1/../../../../arm-rtems6/lib/thumb/cortex-m3/libm.a
--defined-only | grep -C 3 __soft
lib_a-feholdexcept.o:

lib_a-fenv-softfp.o:
00000000 B __softfloat_float_exception_flags
00000000 B __softfloat_float_exception_mask
00000000 B __softfloat_float_rounding_mode
00000000 T __softfp_feclearexcept
00000000 T __softfp_fedisableexcept
00000000 T __softfp_feenableexcept
00000000 T __softfp_fegetenv
00000000 T __softfp_fegetexcept
00000000 T __softfp_fegetexceptflag
00000000 T __softfp_fegetround
00000000 T __softfp_feholdexcept
00000000 T __softfp_feraiseexcept
00000000 T __softfp_fesetenv
00000000 T __softfp_fesetexceptflag
00000000 T __softfp_fesetround
00000000 T __softfp_fetestexcept
00000000 T __softfp_feupdateenv

lib_a-fenv-vfp.o:
00000000 B __softfloat_float_exception_flags
00000000 B __softfloat_float_exception_mask
00000000 B __softfloat_float_rounding_mode
00000000 T __vfp_feclearexcept
00000000 T __vfp_fedisableexcept
00000000 T __vfp_feenableexcept