On Fri, May 15, 2020, 5:59 PM Eshan Dhawan <eshandhawa...@gmail.com> wrote:
> > > On Fri, May 15, 2020 at 2:22 AM Eshan Dhawan <eshandhawa...@gmail.com> > wrote: > >> >> >> On Wed, May 13, 2020 at 7:40 PM Joel Sherrill <j...@rtems.org> wrote: >> >>> National free hint day!!! >>> >>> Look above the line that is reported. You will see __BEGIN_DECL. It >>> isn't defined. It is intended to expand to the __cplusplus wrapper. >>> >>> After you fix this, you will sequentially find 2 other things to change >>> in this file. >>> >>> I have made those changes when a new error occurs from the assembler in >> arm thumb mode >> There is no support for vfp instructions in arm thumb. >> >> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/BABGHDBB.html >> So in which file will the compiler instructions given in the page >> <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/BABGHDBB.html> >> added? >> > FreeBSD has added file and architecture-specific flags in their > makefile.inc > https://github.com/freebsd/freebsd/blob/master/lib/msun/arm/Makefile.inc > How will it be added in newlib > I tried adding the flags -mfpu=vfp -mfloat-abi=softfp (used in FreeBSD) to > makefile.in but no effect. > This isn't going to work with newlib. They don't specify CPU flags that way. The fenv code is going to have to compile for every multilib variant built by arm-rtems and arm-eabi. You will have to use conditionals based on the flags gcc uses to indicate the various cpu features. This command should be close to how you you dump them. gcc -dM -E - </dev/null Add a CPU flag and see how the setting change. You can also look in rtems score cpu arm for examples since the core arm code will be dealing with these. --joel > > thanks > -Eshan > >> Errors : >> >> make[9]: Entering directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/libm/machine/arm' >> arm-rtems5-gcc >> -B/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/ >> -isystem >> /home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/targ-include >> -isystem /home/eshan/development/newlib/newlib-cygwin/newlib/libc/include >> -mthumb -DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" >> -DPACKAGE_VERSION=\"3.3.0\" -DPACKAGE_STRING=\"newlib\ 3.3.0\" >> -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I. >> -I../../../../../../../newlib-cygwin/newlib/libm/machine/arm -I >> ../../../../../../../newlib-cygwin/newlib/libm/machine/arm/../../../../newlib/libm/common >> -fno-builtin -mfpu=vfpv2 -ffunction-sections -fdata-sections >> -D_COMPILING_NEWLIB -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVIDED >> -DSIGNAL_PROVIDED -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED >> -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL -DHAVE_ASSERT_FUNC >> -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT -D_NO_GETPASS -D_NO_SIGSET >> -D_NO_WORDEXP -D_NO_POPEN -D_NO_POSIX_SPAWN -DHAVE_INIT_FINI -g -O2 >> -mthumb -c -o lib_a-fenv-vfp.o `test -f 'fenv-vfp.c' || echo >> '../../../../../../../newlib-cygwin/newlib/libm/machine/arm/'`fenv-vfp.c >> /tmp/ccEHiFws.s: Assembler messages: >> /tmp/ccEHiFws.s:37: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:48: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:81: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:119: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:134: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:169: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:182: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:217: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:251: Error: selected processor does not support `vmrs >> r0,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:288: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:303: Error: selected processor does not support `vmsr >> fpscr,r0' in Thumb mode >> /tmp/ccEHiFws.s:340: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:374: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:390: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:424: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:457: Error: selected processor does not support `vmrs >> r1,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:466: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:478: Error: selected processor does not support `vmrs >> r2,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:503: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:543: Error: selected processor does not support `vmrs >> r0,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:559: Error: selected processor does not support `vmsr >> fpscr,r3' in Thumb mode >> /tmp/ccEHiFws.s:595: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> /tmp/ccEHiFws.s:612: Error: selected processor does not support `vmsr >> fpscr,r2' in Thumb mode >> /tmp/ccEHiFws.s:647: Error: selected processor does not support `vmrs >> r3,fpscr' in Thumb mode >> Makefile:476: recipe for target 'lib_a-fenv-vfp.o' failed >> make[9]: *** [lib_a-fenv-vfp.o] Error 1 >> make[9]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/libm/machine/arm' >> Makefile:324: recipe for target 'all-recursive' failed >> make[8]: *** [all-recursive] Error 1 >> make[8]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/libm/machine' >> Makefile:553: recipe for target 'all-recursive' failed >> make[7]: *** [all-recursive] Error 1 >> make[7]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/libm' >> Makefile:641: recipe for target 'all-recursive' failed >> make[6]: *** [all-recursive] Error 1 >> make[6]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib' >> Makefile:452: recipe for target 'all' failed >> make[5]: *** [all] Error 2 >> make[5]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib' >> Makefile:1260: recipe for target 'multi-do' failed >> make[4]: *** [multi-do] Error 1 >> make[4]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/newlib' >> Makefile:1176: recipe for target 'all-multi' failed >> make[3]: *** [all-multi] Error 2 >> make[3]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/newlib' >> Makefile:452: recipe for target 'all' failed >> make[2]: *** [all] Error 2 >> make[2]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/newlib' >> Makefile:8491: recipe for target 'all-target-newlib' failed >> make[1]: *** [all-target-newlib] Error 2 >> make[1]: Leaving directory >> '/home/eshan/development/newlib/c-arm-rtems5-newlib' >> Makefile:878: recipe for target 'all' failed >> make: *** [all] Error 2 >> >> -Eshan >> >>> Then we need to make a decision whether the static inline versions of >>> the methods in sys/fenv.h are appropriate for newlib or not. >>> >>> --joel >>> >>> On Tue, May 12, 2020 at 5:20 PM Joel Sherrill <j...@rtems.org> wrote: >>> >>>> Gedare is right but one more piece of information is needed. When >>>> newlib is being built, it lays target dependent files on top of generic >>>> ones. So the default sys/fenv.h is replaced with something like >>>> libc/machine/arm/sys/fenv.h. Make sure that >>>> /home/eshan/development/newlib/newlib-cygwin/newlib/libc/include/fenv.h is >>>> in fact the file you think it should be. >>>> >>>> Also look at what is supposed to be in the generic fenv.h and >>>> <sys/fenv.h>. You will probably have to tweak it some. >>>> >>>> Check out what is in x86_64/fenv.h and riscv/fenv.h with respect to the >>>> default environment variable. It looks to be declared differently in the >>>> other ports so you may have to make it match. >>>> >>>> But more output does help. >>>> >>>> --joel >>>> >>>> >>>> >>>> On Tue, May 12, 2020 at 4:53 PM Gedare Bloom <ged...@rtems.org> wrote: >>>> >>>>> Take the first error reported, and show what is being compiled. You've >>>>> trimmed off too much preceding this to know what is being compiled and >>>>> how this might be influencing your error. >>>>> >>>>> The specific error you're getting is often due to some syntax errors >>>>> preceding the line shown. >>>>> >>>>> On Tue, May 12, 2020 at 2:59 PM Eshan Dhawan <eshandhawa...@gmail.com> >>>>> wrote: >>>>> > >>>>> > Hello everyone, >>>>> > After adding the files and compiling. I am >>>>> > getting a few errors which I am not able to rectify. >>>>> > If you could take a look and tell how to sort them. >>>>> > >>>>> > link to newlib's git repo: >>>>> https://github.com/eshandhawan51/newlib-cygwin/tree/add_fenv_support >>>>> > >>>>> > errors : >>>>> > >>>>> > In file included from >>>>> /home/eshan/development/newlib/newlib-cygwin/newlib/libc/include/fenv.h:15:0, >>>>> > from >>>>> ../../../../../../newlib-cygwin/newlib/libm/fenv/feclearexcept.c:57: >>>>> > >>>>> /home/eshan/development/newlib/c-arm-rtems5-newlib/arm-rtems5/thumb/newlib/targ-include/sys/fenv.h:82:1: >>>>> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'extern' >>>>> > extern const fenv_t *_fe_dfl_env; >>>>> > ^~~~~~ >>>>> > In file included from >>>>> ../../../../../../newlib-cygwin/newlib/libm/fenv/feclearexcept.c:57:0: >>>>> > >>>>> /home/eshan/development/newlib/newlib-cygwin/newlib/libc/include/fenv.h:22:1: >>>>> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' >>>>> > int feclearexcept(int excepts); >>>>> > ^~~ >>>>> > >>>>> > thanks >>>>> > -Eshan >>>>> > On Sat, May 9, 2020 at 2:53 AM Joel Sherrill <j...@rtems.org> wrote: >>>>> >> >>>>> >> >>>>> >> >>>>> >> On Thu, May 7, 2020 at 1:33 PM Eshan Dhawan < >>>>> eshandhawa...@gmail.com> wrote: >>>>> >>> >>>>> >>> Hello everyone, >>>>> >>> This the tread to discuss adding fenv support for ARM architecture >>>>> in newlib. >>>>> >>> >>>>> >>> Link to previous thread: >>>>> https://lists.rtems.org/pipermail/devel/2020-March/058473.html >>>>> >>> >>>>> >>> ---FreeBSD Source >>>>> >>> # https://github.com/freebsd/freebsd/tree/master/lib/msun/arm >>>>> >>> # >>>>> https://github.com/freebsd/freebsd/blob/master/sys/arm/include/ieeefp.h >>>>> >>> ---NetBSD Source >>>>> >>> # https://github.com/NetBSD/src/tree/trunk/lib/libm/arch/arm >>>>> >>> >>>>> >>> --- Musl has no implementation for fenv support for ARM in it >>>>> >>> >>>>> >>> After going through the implementations both FreeBSD and NetBSD >>>>> have a stub implementation. >>>>> >>> But then FreeBSD implementation seems to be more portable compared >>>>> to that in NetBSD. >>>>> >>> >>>>> >>> Should I start porting it from FreeBSD? >>>>> >>> And which ARM BSP should I use for testing the changes? >>>>> >>> Currently, I have xilinx_zynq_a9_qemu build >>>>> >> >>>>> >> >>>>> >> I think the FreeBSD implementation is the one to use. It looks to >>>>> support hard and soft floating point implementations. >>>>> >> >>>>> >> I think the fenv.h file there will have to be worked on so some of >>>>> the contents go into sys or machine/fenv.h. There is a portable fenv.h. >>>>> >> >>>>> >>> >>>>> >>> >>>>> >>> There would also be a requirement to discuss where to place the >>>>> files in Newlib. >>>>> >> >>>>> >> >>>>> >> Not much to discuss. It should go into >>>>> newlib-cygwin/newlib/libm/machine/arm. >>>>> >>> >>>>> >>> >>>>> >>> Thanks >>>>> >>> -Eshan >>>>> >>> >>>>> > _______________________________________________ >>>>> > devel mailing list >>>>> > devel@rtems.org >>>>> > http://lists.rtems.org/mailman/listinfo/devel >>>>> >>>>
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel