On 9/11/20 6:24 pm, Sebastian Huber wrote: > On 09/11/2020 02:23, Chris Johns wrote: > >> On 3/11/20 3:39 am, Sebastian Huber wrote: >>> There is probably something wrong with this test program. If it is compiled >>> without function/data sections, no optimization, and no linker garbage >>> collection, then there is an undefined reference to atan2() and tan(). >> These symbols are referenced in the loaded module ... >> >> https://git.rtems.org/rtems/tree/testsuites/libtests/dl06/dl06-o2.c >> >> This test gets rtems-ld with the RAP format to collect the atan1 and tan code >> into the loaded module. They should not be present in the base image. The >> libm >> library is used because it is _not_ part of the standard libraries linked >> and is >> available everywhere. >> >>> Fix this issue by adding -lm. >> Is the error linking the base kernel image or the RAP loadable module? >> >> If it is the loadable module and this is how you add the libraries to be >> searched to the rtems-ld command then the fix is needed and there is no >> problem. >> If the error was in the base kernel image then I suggest something else is >> wrong >> because those symbols should not be present in the base image. If the build >> system can support options for just rtems-ld then adding it there would be >> good. > > The error is in this command: > > > [4044/4050] Processing link: > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o1.o > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o2.o > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-tar.o > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/init.o > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl-load.o > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-sym.o -> > build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06.exe > 08:21:03 runner ['/build/rtems/6/bin/arm-rtems6-gcc', '-qnolinkcmds', '-T', > 'linkcmds.realview_pbx_a9_qemu', > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o1.o', > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o2.o',
These should not be linked into the base image. They are in the RAP image in dl06-tar.o. > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-tar.o', > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/init.o', > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl-load.o', > '/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-sym.o', > '-o/home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06.exe', > '-Wl,--wrap=printf', '-Wl,--wrap=puts', '-L.', '-lrtemscpu', '-lrtemsbsp', > '-lrtemstest', '-qrtems', '-march=armv7-a', '-mthumb', '-mfpu=neon', > '-mfloat-abi=hard', '-mtune=cortex-a9', > '-L/home/EB/sebastian_h/git-rtems-6/bsps/arm/shared/start', > '-L/home/EB/sebastian_h/git-rtems-6/bsps/arm/realview-pbx-a9/start'] > /build/rtems/6/lib/gcc/arm-rtems6/10.2.1/../../../../arm-rtems6/bin/ld: > /home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o2.o: > in function `dl_o2_func2': > /home/EB/sebastian_h/git-rtems-6/testsuites/libtests/dl06/dl06-o2.c:31: > undefined reference to `atan2' > /build/rtems/6/lib/gcc/arm-rtems6/10.2.1/../../../../arm-rtems6/bin/ld: > /home/EB/sebastian_h/git-rtems-6/build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl06/dl06-o2.o: > in function `dl_o2_func3': > > /home/EB/sebastian_h/git-rtems-6/testsuites/libtests/dl06/dl06-o2.c:37: > undefined reference to `tan' > > I used the following config.ini: > > [arm/realview_pbx_a9_qemu] > BUILD_LIBTESTS = True > OPTIMIZATION_FLAGS = -O0 -g > LDFLAGS = > >> >> More of a concern is no error. I wonder if the code is being inlined when >> there >> is FPU support. Maybe the test needs to create a library linking to it to be >> more robust? > Using these functions without -fno-builtin is not really robust. Would adding a pragma for this option to dl06-o1.c and dl06-o2.c be acceptable as a solution? Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel