Cargo ignoring the linker flag in .cargo/config


#1

I am currently trying to compile a bare metal application for an ARM Cortex A8 based SoC, for that purpose I’ve written a custom arm-none-eabi target file and a .cargo/config file which which looks as follows

[target.arm-none-eabi]
linker = "arm-none-eabi-gcc"
rustflags = [
  "-C", "target-cpu=cortex-a8",
]

I then tried to compile that using cargo-xbuild (already opened an issue over there) However it ignored the linker flag and compiled with /usr/bin/ld instead. If i change the file to

[target.arm-none-eabi]
rustflags = [
  "-C", "target-cpu=cortex-a8",
  "-C", "linker=arm-none-eabi-gcc"
]

Everything works fine and it uses the arm-none-eabi-gcc linker. After some trouble shooting on Github we came to the conclusion that this is apparently not cargo-xbuilds fault as compiling with cargo build and a custom sysroot will also ignore the linker flag and use /usr/bin/ld. Im currrently running on cargo 1.33.0 nightly from 2019-01-03 with rustc 1.33.0 nightly from one day later.
Has anybody got an idea why cargo ignores the linker flag and just uses the default linker / how to tell cargo to use the linker flag without defining it as a custom rustflag?