This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
The GCC ARM compiler uses multi-lib where the linker selects the library to link according to combination of options passed to the linker. E.g. for the GNU v6.3.1 installed via the CCS "Install GCC ARM Compiler Tools" the available libraries are:
C:\ti\ccs1040\ccs\tools\compiler\gcc-arm-none-eabi-6-2017-q1-update\bin>arm-none-eabi-gcc.exe --print-multi-lib .; thumb;@mthumb hard;@mfloat-abi=hard thumb/v6-m;@mthumb@march=armv6s-m thumb/v7-m;@mthumb@march=armv7-m thumb/v7e-m;@mthumb@march=armv7e-m thumb/v7-ar;@mthumb@march=armv7 thumb/v8-m.base;@mthumb@march=armv8-m.base thumb/v8-m.main;@mthumb@march=armv8-m.main thumb/v7e-m/fpv4-sp/softfp;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=softfp thumb/v7e-m/fpv4-sp/hard;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=hard thumb/v7e-m/fpv5-sp/softfp;@mthumb@march=armv7e-m@mfpu=fpv5-sp-d16@mfloat-abi=softfp thumb/v7e-m/fpv5-sp/hard;@mthumb@march=armv7e-m@mfpu=fpv5-sp-d16@mfloat-abi=hard thumb/v7e-m/fpv5/softfp;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=softfp thumb/v7e-m/fpv5/hard;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=hard thumb/v7-ar/fpv3/softfp;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=softfp thumb/v7-ar/fpv3/hard;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=hard thumb/v8-m.main/fpv5-sp/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=softfp thumb/v8-m.main/fpv5-sp/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=hard thumb/v8-m.main/fpv5/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=softfp thumb/v8-m.main/fpv5/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=hard
When setting up a new project have found that CCS doesn't pass all of the Compiler Runtime options the the Linker which can cause linker errors.
E.g. create a new project for a RM46L850 in CCS 10.4.0.00006 using GNU v6.3.1 as the compiler.
On the Build -> GNU Compiler -> Runtime options entered values for -mcpu, -mfloat-abi and -mfpu:
A build failed with errors from the linker:
**** Clean-only build of configuration Debug for project RM46L850_GCC_halcogen_cpp **** "C:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 4 clean -O DEL /F "RM46L850_GCC_halcogen_cpp.hex" "RM46L850_GCC_halcogen_cpp.out" DEL /F "source\cpp_test.o" "source\dabort.o" "source\errata_SSWF021_45.o" "source\esm.o" "source\notification.o" "source\pinmux.o" "source\sci.o" "source\sys_core.o" "source\sys_dma.o" "source\sys_intvecs.o" "source\sys_main.o" "source\sys_mpu.o" "source\sys_pcr.o" "source\sys_phantom.o" "source\sys_pmm.o" "source\sys_pmu.o" "source\sys_selftest.o" "source\sys_startup.o" "source\sys_vim.o" "source\system.o" DEL /F "source\errata_SSWF021_45.d" "source\esm.d" "source\notification.d" "source\pinmux.d" "source\sci.d" "source\sys_dma.d" "source\sys_main.d" "source\sys_pcr.d" "source\sys_phantom.d" "source\sys_pmm.d" "source\sys_selftest.d" "source\sys_startup.d" "source\sys_vim.d" "source\system.d" DEL /F "source\cpp_test.d" DEL /F "source\dabort.d" "source\sys_core.d" "source\sys_intvecs.d" "source\sys_mpu.d" "source\sys_pmu.d" Could Not Find C:\Users\mr_halfword\workspace_v10\RM46L850_GCC_halcogen_cpp\Debug\RM46L850_GCC_halcogen_cpp.hex Could Not Find C:\Users\mr_halfword\workspace_v10\RM46L850_GCC_halcogen_cpp\Debug\source\dabort.d Finished clean **** Build Finished **** **** Build of configuration Debug for project RM46L850_GCC_halcogen_cpp **** "C:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 4 all -O Building file: "../source/dabort.s" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -o"source/dabort.o" "../source/dabort.s" Finished building: "../source/dabort.s" Building file: "../source/errata_SSWF021_45.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/errata_SSWF021_45.d_raw" -MT"source/errata_SSWF021_45.o" -o"source/errata_SSWF021_45.o" "../source/errata_SSWF021_45.c" Finished building: "../source/errata_SSWF021_45.c" Building file: "../source/esm.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/esm.d_raw" -MT"source/esm.o" -o"source/esm.o" "../source/esm.c" Finished building: "../source/esm.c" Building file: "../source/notification.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/notification.d_raw" -MT"source/notification.o" -o"source/notification.o" "../source/notification.c" Finished building: "../source/notification.c" Building file: "../source/pinmux.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/pinmux.d_raw" -MT"source/pinmux.o" -o"source/pinmux.o" "../source/pinmux.c" Finished building: "../source/pinmux.c" Building file: "../source/sci.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sci.d_raw" -MT"source/sci.o" -o"source/sci.o" "../source/sci.c" Finished building: "../source/sci.c" Building file: "../source/sys_core.s" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -o"source/sys_core.o" "../source/sys_core.s" Finished building: "../source/sys_core.s" Building file: "../source/cpp_test.cpp" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/cpp_test.d_raw" -MT"source/cpp_test.o" -fno-threadsafe-statics -o"source/cpp_test.o" "../source/cpp_test.cpp" Finished building: "../source/cpp_test.cpp" Building file: "../source/sys_intvecs.s" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -o"source/sys_intvecs.o" "../source/sys_intvecs.s" Finished building: "../source/sys_intvecs.s" Building file: "../source/sys_dma.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_dma.d_raw" -MT"source/sys_dma.o" -o"source/sys_dma.o" "../source/sys_dma.c" Finished building: "../source/sys_dma.c" Building file: "../source/sys_main.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_main.d_raw" -MT"source/sys_main.o" -o"source/sys_main.o" "../source/sys_main.c" Finished building: "../source/sys_main.c" Building file: "../source/sys_mpu.s" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -o"source/sys_mpu.o" "../source/sys_mpu.s" Finished building: "../source/sys_mpu.s" Building file: "../source/sys_pcr.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_pcr.d_raw" -MT"source/sys_pcr.o" -o"source/sys_pcr.o" "../source/sys_pcr.c" Finished building: "../source/sys_pcr.c" Building file: "../source/sys_phantom.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_phantom.d_raw" -MT"source/sys_phantom.o" -o"source/sys_phantom.o" "../source/sys_phantom.c" Finished building: "../source/sys_phantom.c" Building file: "../source/sys_pmu.s" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -o"source/sys_pmu.o" "../source/sys_pmu.s" Finished building: "../source/sys_pmu.s" Building file: "../source/sys_pmm.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_pmm.d_raw" -MT"source/sys_pmm.o" -o"source/sys_pmm.o" "../source/sys_pmm.c" Finished building: "../source/sys_pmm.c" Building file: "../source/sys_startup.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_startup.d_raw" -MT"source/sys_startup.o" -o"source/sys_startup.o" "../source/sys_startup.c" Finished building: "../source/sys_startup.c" Building file: "../source/sys_vim.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_vim.d_raw" -MT"source/sys_vim.o" -o"source/sys_vim.o" "../source/sys_vim.c" Finished building: "../source/sys_vim.c" Building file: "../source/system.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/system.d_raw" -MT"source/system.o" -o"source/system.o" "../source/system.c" Finished building: "../source/system.c" Building file: "../source/sys_selftest.c" Invoking: GNU Compiler "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -c -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp" -I"C:/Users/mr_halfword/workspace_v10/RM46L850_GCC_halcogen_cpp/include" -I"C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"source/sys_selftest.d_raw" -MT"source/sys_selftest.o" -o"source/sys_selftest.o" "../source/sys_selftest.c" ../source/sys_selftest.c: In function 'fmcECCcheck': ../source/sys_selftest.c:797:21: warning: variable 'temp' set but not used [-Wunused-but-set-variable] volatile uint32 temp; ^~~~ ../source/sys_selftest.c:796:21: warning: variable 'otpread' set but not used [-Wunused-but-set-variable] volatile uint32 otpread; ^~~~~~~ ../source/sys_selftest.c: In function 'checkB0RAMECC': ../source/sys_selftest.c:853:18: warning: variable 'regread' set but not used [-Wunused-but-set-variable] volatile uint32 regread = 0U; ^~~~~~~ ../source/sys_selftest.c:852:21: warning: variable 'ramread' set but not used [-Wunused-but-set-variable] volatile uint64 ramread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'checkB1RAMECC': ../source/sys_selftest.c:951:18: warning: variable 'regread' set but not used [-Wunused-but-set-variable] volatile uint32 regread = 0U; ^~~~~~~ ../source/sys_selftest.c:950:21: warning: variable 'ramread' set but not used [-Wunused-but-set-variable] volatile uint64 ramread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'checkFlashECC': ../source/sys_selftest.c:1049:21: warning: variable 'flashread' set but not used [-Wunused-but-set-variable] volatile uint32 flashread = 0U; ^~~~~~~~~ ../source/sys_selftest.c: In function 'vimParityCheck': ../source/sys_selftest.c:1188:21: warning: variable 'vimramread' set but not used [-Wunused-but-set-variable] volatile uint32 vimramread = 0U; ^~~~~~~~~~ ../source/sys_selftest.c: In function 'dmaParityCheck': ../source/sys_selftest.c:1245:21: warning: variable 'dmaread' set but not used [-Wunused-but-set-variable] volatile uint32 dmaread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'het1ParityCheck': ../source/sys_selftest.c:1302:21: warning: variable 'nhetread' set but not used [-Wunused-but-set-variable] volatile uint32 nhetread = 0U; ^~~~~~~~ ../source/sys_selftest.c: In function 'htu1ParityCheck': ../source/sys_selftest.c:1356:21: warning: variable 'hturead' set but not used [-Wunused-but-set-variable] volatile uint32 hturead = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'het2ParityCheck': ../source/sys_selftest.c:1412:21: warning: variable 'nhetread' set but not used [-Wunused-but-set-variable] volatile uint32 nhetread = 0U; ^~~~~~~~ ../source/sys_selftest.c: In function 'htu2ParityCheck': ../source/sys_selftest.c:1472:21: warning: variable 'hturead' set but not used [-Wunused-but-set-variable] volatile uint32 hturead = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'adc1ParityCheck': ../source/sys_selftest.c:1527:21: warning: variable 'adcramread' set but not used [-Wunused-but-set-variable] volatile uint32 adcramread = 0U; ^~~~~~~~~~ ../source/sys_selftest.c: In function 'adc2ParityCheck': ../source/sys_selftest.c:1581:21: warning: variable 'adcramread' set but not used [-Wunused-but-set-variable] volatile uint32 adcramread = 0U; ^~~~~~~~~~ ../source/sys_selftest.c: In function 'can1ParityCheck': ../source/sys_selftest.c:1634:21: warning: variable 'canread' set but not used [-Wunused-but-set-variable] volatile uint32 canread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'can2ParityCheck': ../source/sys_selftest.c:1698:21: warning: variable 'canread' set but not used [-Wunused-but-set-variable] volatile uint32 canread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'can3ParityCheck': ../source/sys_selftest.c:1762:21: warning: variable 'canread' set but not used [-Wunused-but-set-variable] volatile uint32 canread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'mibspi1ParityCheck': ../source/sys_selftest.c:1826:21: warning: variable 'spiread' set but not used [-Wunused-but-set-variable] volatile uint32 spiread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'mibspi3ParityCheck': ../source/sys_selftest.c:1890:21: warning: variable 'spiread' set but not used [-Wunused-but-set-variable] volatile uint32 spiread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'mibspi5ParityCheck': ../source/sys_selftest.c:1954:21: warning: variable 'spiread' set but not used [-Wunused-but-set-variable] volatile uint32 spiread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'checkRAMECC': ../source/sys_selftest.c:2019:18: warning: variable 'regread' set but not used [-Wunused-but-set-variable] volatile uint32 regread = 0U; ^~~~~~~ ../source/sys_selftest.c:2018:21: warning: variable 'ramread' set but not used [-Wunused-but-set-variable] volatile uint64 ramread = 0U; ^~~~~~~ ../source/sys_selftest.c: In function 'checkFlashEEPROMECC': ../source/sys_selftest.c:2175:21: warning: variable 'regread' set but not used [-Wunused-but-set-variable] volatile uint32 regread; ^~~~~~~ ../source/sys_selftest.c: In function 'checkRAMAddrParity': ../source/sys_selftest.c:2410:18: warning: variable 'regread' set but not used [-Wunused-but-set-variable] volatile uint32 regread; ^~~~~~~ ../source/sys_selftest.c: In function 'fmcBus1ParityCheck': ../source/sys_selftest.c:2534:21: warning: variable 'flashread' set but not used [-Wunused-but-set-variable] volatile uint32 flashread = 0U; ^~~~~~~~~ Finished building: "../source/sys_selftest.c" Building target: "RM46L850_GCC_halcogen_cpp.out" Invoking: GNU Linker "C:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc-6.3.1.exe" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -mfloat-abi=hard -Wl,-Map,"RM46L850_GCC_halcogen_cpp.map" -o"RM46L850_GCC_halcogen_cpp.out" "./source/cpp_test.o" "./source/dabort.o" "./source/errata_SSWF021_45.o" "./source/esm.o" "./source/notification.o" "./source/pinmux.o" "./source/sci.o" "./source/sys_core.o" "./source/sys_dma.o" "./source/sys_intvecs.o" "./source/sys_main.o" "./source/sys_mpu.o" "./source/sys_pcr.o" "./source/sys_phantom.o" "./source/sys_pmm.o" "./source/sys_pmu.o" "./source/sys_selftest.o" "./source/sys_startup.o" "./source/sys_vim.o" "./source/system.o" -Wl,-T"../source/sys_link.ld" -Wl,--start-group -lc -lstdc++ -Wl,--end-group makefile:163: recipe for target 'RM46L850_GCC_halcogen_cpp.out' failed c:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/hard\libstdc++.a(locale_init.o): In function `(anonymous namespace)::get_locale_mutex()': locale_init.cc:(.text._ZN12_GLOBAL__N_116get_locale_mutexEv+0xc): undefined reference to `__sync_synchronize' c:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/hard\libstdc++.a(locale.o): In function `std::locale::_Impl::_M_install_cache(std::locale::facet const*, unsigned int)': locale.cc:(.text._ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj+0x18): undefined reference to `__sync_synchronize' c:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/hard\libstdc++.a(future.o): In function `std::future_category()': future.cc:(.text._ZSt15future_categoryv+0xc): undefined reference to `__sync_synchronize' collect2.exe: error: ld returned 1 exit status gmake[1]: *** [RM46L850_GCC_halcogen_cpp.out] Error 1 makefile:159: recipe for target 'all' failed gmake: *** [all] Error 2 **** Build Finished ****
The problem is that while the -mcpu=cortex-r4 -mfloat-abi=hard -mfpu=vfpv3-d16 options had been set for the compiler, of those options only -mfloat-abi=hard had been passed to the linker by CCS. This caused the linker multi-lib to select an incompatible library resulting in errors.
To get the project to link under Build -> GNU Linker -> Miscellaneous added the -mcpu=cortex-r4 and -mfpu=vfpv3-d16 options:
Is it a bug that CCS doesn't automatically pass all of the Compiler Runtime options selected in the project to the Linker?
Chester,
It certainly seems like a bug in CCS. Ki will be back tomorrow and can take a look.
Regards,
John
Hi Chester,
It does indeed look like a bug. I can reproduce this using GCC 6.3.1. As you mentioned, only "mfloat-abi=hard" appears to get passed to the linker. Interestingly, when I remove that option, then I noticed that (only) "-mcpu=cortex-r4" gets passed to the linker.
When I use GCC 9.2.1, I see different behavior in regards to what gets passed to the linker. But there is always something missing.
I will file a bug
Thanks
ki
Interestingly, when I remove that option, then I noticed that (only) "-mcpu=cortex-r4" gets passed to the linker.
In case it helps, https://github.com/Chester-Gillon/E2E_example_projects/tree/master/RM46L850_GCC_halcogen_cpp is the project which I found this issue in. In the checked-in project the -mcpu=cortex-r4 and -mfpu=vfpv3-d16 options have been manually added to the Miscellaneous Linker options.
Thanks Chester. I filed a bug for this issue. Tracking link: https://sir.ext.ti.com/jira/browse/EXT_EP-10491
ki