Skip to content

Version 0.7.0 : Failed to load bc of "cortex_m-[...].cortex_m.[...]-cgu.0.rcgu.o" #310

Closed
@mindstorm38

Description

@mindstorm38

Hello, I've recently found a critical issue that prevent a project using cortex-m version 0.7.0 from being linked (at least on my computer).
Because I'm a newbie in embedded software, to reproduce this issue I downloaded the cortex-m-quickstart. My conclusion is that the only parameter that allow the example project to build and not mine is the cortex-m version (0.6.0 works but 0.7.0 don't).

Some more context:

  • os Windows 10
  • rustc 1.48.0 (7eac88abb 2020-11-16)
  • target arch thumbv7em-none-eabihf
  • target microproc stm32f303k8

Memory mapping (memory.x):

MEMORY
{
  FLASH : ORIGIN = 0x08000000, LENGTH = 64K
  RAM : ORIGIN = 0x20000000, LENGTH = 12K
}

Linker error trace:

warning: Linking globals named 'CORE_PERIPHERALS': symbol multiply defined!
error: failed to load bc of "cortex_m-e7808f4bc8bc3911.cortex_m.a36est71-cgu.0.rcgu.o": 
error: aborting due to previous error; 3 warnings emitted
error: could not compile `rust-cortex-m`

Update(s):

  • Version 0.6.4 also link correctly.

Maybe an idea:
Can this be caused by the fact that cortex-m-rt only use cortex-m version 0.6.*? Could this cause the two versions to define the symbol? In this case it can be a great addition for beginners to add a warning message explaining that two or more version of cortex-m can't coexist.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions