On 28.04.22 10:16, Sebastian Huber wrote:
Hello,
I test currently the Ada support for RTEMS in GCC 12. We have a -mthumb
-march=armv7-a+simd -mfloat-abi=hard multilib for which the Ada RTS is
built like this:
make[4]: Entering directory
'/tmp/sh/b-gcc-arm-rtems6/arm-rtems6/thumb/armv7-a+simd/hard/libada'
make -C ../../../../.././gcc/ada "MAKEOVERRIDES=" "LDFLAGS=-mthumb
-march=armv7-a+simd -mfloat-abi=hard" "LN_S=ln -s" "SHELL=/bin/sh"
"GNATLIBFLAGS=-W -Wall -gnatpg -nostdinc -mthumb -march=armv7-a+simd
-mfloat-abi=hard" "GNATLIBCFLAGS=-g -O2 -mthumb -march=armv7-a+simd
-mfloat-abi=hard" "GNATLIBCFLAGS_FOR_C=-W -Wall -g -O2 -g -O2
-fexceptions -DIN_RTS -DHAVE_GETIPINFO -mthumb -march=armv7-a+simd
-mfloat-abi=hard" "PICFLAG_FOR_TARGET=-fPIC" "THREAD_KIND=native"
"TRACE=no" "MULTISUBDIR=/thumb/armv7-a+simd/hard"
"libsubdir=/tmp/sh/i-arm-rtems6/lib64/gcc/arm-rtems6/12.0.1/thumb/armv7-a+simd/hard" "toolexeclibdir=/tmp/sh/i-arm-rtems6/lib64/gcc/arm-rtems6/12.0.1/thumb/armv7-a+simd/hard/adalib" "objext=.o" "prefix=/tmp/sh/i-arm-rtems6" "exeext=.exeext.should.not.be.used " 'CC=the.host.compiler.should.not.be.needed' "GCC_FOR_TARGET=/tmp/sh/b-gcc-arm-rtems6/./gcc/xgcc -B/tmp/sh/b-gcc-arm-rtems6/./gcc/ -nostdinc -B/tmp/sh/b-gcc-arm-rtems6/arm-rtems6/newlib/ -isystem /tmp/sh/b-gcc-arm-rtems6/arm-rtems6/newlib/targ-include -isystem /home/EB/sebastian_h/src/gcc/newlib/libc/include -B/tmp/sh/i-arm-rtems6/arm-rtems6/bin/ -B/tmp/sh/i-arm-rtems6/arm-rtems6/lib/ -isystem /tmp/sh/i-arm-rtems6/arm-rtems6/include -isystem /tmp/sh/i-arm-rtems6/arm-rtems6/sys-include " "CFLAGS=-g -O2 -mthumb -march=armv7-a+simd -mfloat-abi=hard" ./bldtools/oscons/xoscons
When I try to link a test application I get this error:
arm-rtems7-gnatlink
/tmp/sh/b-rtems/arm/realview_pbx_a9_qemu/testsuites/ada/samples/nsecs/nsecs.ali testsuites/ada/samples/nsecs/init.o -qnolinkcmds -T linkcmds.realview_pbx_a9_qemu -Wl,--wrap=printf -Wl,--wrap=puts -Wl,--wrap=putchar -L. -lrtemscpu -lrtemsbsp -lrtemstest -qrtems -mthumb -march=armv7-a+simd -mfloat-abi=hard -mtune=cortex-a9 -Wl,--gc-sections -L/home/EB/sebastian_h/src/rtems/bsps/arm/shared/start -L/home/EB/sebastian_h/src/rtems/bsps/arm/realview-pbx-a9/start -o /tmp/sh/b-rtems/arm/realview_pbx_a9_qemu/testsuites/ada/ada_nsecs.exe
/opt/rtems/7/lib/gcc/arm-rtems7/12.0.1/thumb/armv7-a+simd/hard/adainclude/s-secsta.ads:288:9:
sorry, unimplemented: Thumb-1 'hard-float' VFP ABI
The s-secsta.ads seems to be from the right multilib directory
(Thumb-2), however, I get a sorry message related to Thumb-1?
I tried it again with GCC 13, but the problem still exists. I tried to
use strace to get some more insights (the environment variables are
partially shown):
[pid 110912] execve("/opt/rtems-6-zynq-1/bin/arm-rtems6-gnatmake",
["/opt/rtems-6-zynq-1/bin/arm-rtems6-gnatmake", "-D",
"testsuites/ada/tmtests/tm20", "-bargs", "-Mgnat_main", "-margs",
"-Icpukit/include/adainclude",
"-I../../../../src/rtems/cpukit/include/adainclude",
"-Itestsuites/ada/support",
"-I../../../../src/rtems/testsuites/ada/support", "-cargs",
"-march=armv7-a", "-mthumb", "-mfpu=neon", "-mfloat-abi=hard",
"-mtune=cortex-a9", "-largs", "testsuites/ada/tmtests/tm20/init.o",
"-Wl,--wrap=printf", "-Wl,--wrap=puts", "-Wl,--wrap=putchar", "-L.",
"-lrtemscpu", "-lrtemsbsp", "-lrtemstest", "-qrtems", "-march=armv7-a",
"-mthumb", "-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9",
"-Wl,--gc-sections",
"-L/opt/rtems-6-zynq-1/src/rtems/bsps/arm/shared/start",
"-L/opt/rtems-6-zynq-1/src/rtems/bsps/arm/xilinx-zynq/start", "-margs",
"-a",
"/opt/rtems-6-zynq-1/src/rtems/testsuites/ada/tmtests/tm20/tm20.adb",
"-o",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/testsuites/ada/ada_tm20.exe"],
[] <unfinished ...>
[pid 110913] execve("/opt/rtems-6-zynq-1//bin/arm-rtems6-gcc",
["/opt/rtems-6-zynq-1//bin/arm-rtems6-gcc", "-march=armv7-a", "-mthumb",
"-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9", "-march=armv7-a",
"-mthumb", "-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9",
"-print-multi-directory"], []) = 0
The above call is used to get the multi-lib directory. Which yields:
--RTS=thumb/armv7-a+simd/hard
The flags seem to be obtained by getting all "-m" flags from the
previous "-cargs" and "-largs". So, each flags appears twice.
[pid 110914] execve("/opt/rtems-6-zynq-1//bin/arm-rtems6-gnatbind",
["/opt/rtems-6-zynq-1//bin/arm-rtems6-gnatbind",
"-aO/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/testsuites/ada/tmtests/tm20",
"-Mgnat_main", "-Icpukit/include/adainclude",
"-I../../../../src/rtems/cpukit/include/adainclude",
"-Itestsuites/ada/support",
"-I../../../../src/rtems/testsuites/ada/support",
"--RTS=thumb/armv7-a+simd/hard", "-x",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/testsuites/ada/tmtests/tm20/tm20.ali"],
[]) = 0
[pid 110915] execve("/opt/rtems-6-zynq-1//bin/arm-rtems6-gnatlink",
["/opt/rtems-6-zynq-1//bin/arm-rtems6-gnatlink",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/testsuites/ada/tmtests/tm20/tm20.ali",
"testsuites/ada/tmtests/tm20/init.o", "-Wl,--wrap=printf",
"-Wl,--wrap=puts", "-Wl,--wrap=putchar", "-L.", "-lrtemscpu",
"-lrtemsbsp", "-lrtemstest", "-qrtems", "-march=armv7-a", "-mthumb",
"-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9",
"-Wl,--gc-sections",
"-L/opt/rtems-6-zynq-1/src/rtems/bsps/arm/shared/start",
"-L/opt/rtems-6-zynq-1/src/rtems/bsps/arm/xilinx-zynq/start", "-o",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/testsuites/ada/ada_tm20.exe"],
[]) = 0
Now the trouble starts, there is no longer a "-march=armv7-a" option:
[pid 110916] execve("/opt/rtems-6-zynq-1/bin/arm-rtems6-gcc",
["/opt/rtems-6-zynq-1/bin/arm-rtems6-gcc", "-c", "-mthumb",
"-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9",
"--RTS=thumb/armv7-a+simd/hard", "-gnatA", "-gnatWb", "-gnatiw",
"-gnatws",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/b~tm20.adb"],
[]) = 0
Here a "-march=armv4t" pops up.
[pid 110917]
execve("/opt/rtems-6-zynq-1/lib/gcc/arm-rtems6/13.2.1/gnat1",
["/opt/rtems-6-zynq-1/lib/gcc/arm-rtems6/13.2.1/gnat1", "-quiet",
"-dumpbase", "b~tm20.adb", "-dumpbase-ext", ".adb", "-mthumb",
"-mfpu=neon", "-mfloat-abi=hard", "-mtune=cortex-a9",
"-fRTS=thumb/armv7-a+simd/hard", "-gnatA", "-gnatWb", "-gnatiw",
"-gnatws", "-mcpu=arm7tdmi", "-mlibarch=armv4t", "-march=armv4t",
"-ftls-model=local-exec",
"/opt/rtems-6-zynq-1/build/arm-xilinx_zynq_zc702-bsp-extra/arm/xilinx_zynq_zc702/b~tm20.adb",
"-o", "/tmp/ccZhtzF7.s"],
["COLLECT_GCC=/opt/rtems-6-zynq-1/bin/arm-rtems6-gcc",
"COLLECT_GCC_OPTIONS='-c' '-mthumb' '-mfpu=neon' '-mfloat-abi=hard'
'-mtune=cortex-a9' '-fRTS=thumb/armv7-a+simd/hard' '-gnatA' '-gnatWb'
'-gnatiw' '-gnatws' '-mcpu=arm7tdmi' '-mlibarch=armv4t'
'-march=armv4t'"] <unfinished ...>
Could someone give me a hint which component in GCC does this kind of
option processing and mapping?
--
embedded brains GmbH & Co. KG
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/