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.

CCS 10.4.0.00006 : For the GCC ARM compiler how does CCS determine how many of the Compiler Runtime options to pass to the Linker?

Other Parts Discussed in Thread: RM46L850, HALCOGEN

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?