Skip to content

ran out of registers for AVR atmega4809 #112140

@cpt-n3mo

Description

@cpt-n3mo

Good day..

I have been trying to compile some code for a atmega4809, following the rust embedded book.
but im running into quite some problems,..

used the following device jsons with either atmega4809 || avrxmega3 cpu setting,
pack was downloaded from the official place

{
    "arch": "avr",
    "atomic-cas": false,
    "cpu": "atmega4809",
    "data-layout": "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8",
    "eh-frame-header": false,
    "env": "",
    "exe-suffix": ".elf",
    "executables": true,
    "late-link-args": {
        "gcc": [
            "-lgcc"
        ]
    },
    "linker": "avr-gcc",
    "linker-is-gnu": true,
    "llvm-target": "avr-unknown-unknown",
    "code-model": "small",
    "max-atomic-width": 8,
    "no-default-libraries": false,
    "os": "unknown",
    "pre-link-args": {
        "gcc": [
            "-mmcu=atmega4809",
            "-B./packs/gcc/dev/atmega4809/"

        ]
    },
    "target-c-int-width": "16",
    "target-endian": "little",
    "target-pointer-width": "16",
    "vendor": "unknown"
}

.cargo/config.toml

[build]
target = "./avr-4809.json"


[unstable]
build-std = ["core"]

while using nightly-2022-10-22 it gives me a SIGSEGV with release tag

➜  arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json --release
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.82
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling avr-std-stub v1.0.3
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x28bdd83)[0x7fedeb0bdd83]
/usr/lib/libc.so.6(+0x39ab0)[0x7fede84c2ab0]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm12MachineInstr15addRegisterDeadENS_8RegisterEPKNS_18TargetRegisterInfoEb+0xe7)[0x7fede6e364e7]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm13LiveIntervals17computeDeadValuesERNS_12LiveIntervalEPNS_15SmallVectorImplIPNS_12MachineInstrEEE+0x141)[0x7fede6e9b5c1]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm13LiveIntervals12shrinkToUsesEPNS_12LiveIntervalEPNS_15SmallVectorImplIPNS_12MachineInstrEEE+0x3e8)[0x7fede6e9b1f0]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm13LiveRangeEdit17eliminateDeadDefsERNS_15SmallVectorImplIPNS_12MachineInstrEEENS_8ArrayRefINS_8RegisterEEE+0x18c)[0x7fede6c75c8c]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(+0x5cece1a)[0x7fede72ece1a]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm12RegAllocBase16postOptimizationEv+0x17)[0x7fede6be8e35]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(+0x59e2f70)[0x7fede6fe2f70]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0xb0f)[0x7fede7029c1f]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x2f)[0x7fede70290ef]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.66.0-nightly.so(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x210)[0x7fede6d4b95c]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23b73a2)[0x7fedeabb73a2]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23b6cf9)[0x7fedeabb6cf9]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23b4c5a)[0x7fedeabb4c5a]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23b2105)[0x7fedeabb2105]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23b1117)[0x7fedeabb1117]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23af548)[0x7fedeabaf548]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/librustc_driver-fd3fbd78313e2ee9.so(+0x23148a9)[0x7fedeab148a9]
/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/libstd-7b2106000b625742.so(rust_metadata_std_631fbe326a1fa8e7+0xff583)[0x7fede8779583]
/usr/lib/libc.so.6(+0x8744b)[0x7fede851044b]
/usr/lib/libc.so.6(+0x10ae40)[0x7fede8593e40]
error: could not compile `core`

Caused by:
  process didn't exit successfully: `rustc --crate-name core --edition=2021 /home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=a775a4ac62b5815b -C extra-filename=-a775a4ac62b5815b --out-dir /home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps --target /home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/avr-4809.json -Z force-unstable-if-unmarked -L dependency=/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps -L dependency=/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/release/deps --cap-lints allow` (signal: 11, SIGSEGV: invalid memory reference)

while using nightly-2022-10-22 without --release

 arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-2022-10-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling compiler_builtins v0.1.82
error: ran out of registers during register allocation

error: could not compile `core` due to previous error
warning: build failed, waiting for other jobs to finish...

using nightly-2022-12-08 without --release gives again a SIGSEGV

arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.84
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x3295713)[0x7f06fec95713]
/usr/lib/libc.so.6(+0x39ab0)[0x7f06fb6b5ab0]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(_ZN4llvm12MachineInstr10addOperandERNS_15MachineFunctionERKNS_14MachineOperandE+0x1e6)[0x7f06f9c00580]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(+0x4c8e8cc)[0x7f06f948e8cc]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(+0x4c8e61f)[0x7f06f948e61f]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0xafd)[0x7f06fa179851]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x2f)[0x7f06fa178d33]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/libLLVM-15-rust-1.67.0-nightly.so(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x21a)[0x7f06f9f5575a]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277da82)[0x7f06fe17da82]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277d445)[0x7f06fe17d445]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277b397)[0x7f06fe17b397]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277884d)[0x7f06fe17884d]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277770e)[0x7f06fe17770e]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x277667e)[0x7f06fe17667e]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x2692a24)[0x7f06fe092a24]
/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/librustc_driver-e0c8ab3d159f8c4e.so(+0x404a393)[0x7f06ffa4a393]
/usr/lib/libc.so.6(+0x8744b)[0x7f06fb70344b]
/usr/lib/libc.so.6(+0x10ae40)[0x7f06fb786e40]
   Compiling avr-std-stub v1.0.3
error: could not compile `core`

Caused by:
  process didn't exit successfully: `rustc --crate-name core --edition=2021 /home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=b4da6b00cf28ed56 -C extra-filename=-b4da6b00cf28ed56 --out-dir /home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/debug/deps --target /home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/avr-4809.json -Z force-unstable-if-unmarked -L dependency=/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/debug/deps -L dependency=/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/debug/deps --cap-lints allow` (signal: 11, SIGSEGV: invalid memory reference)

using nightly-2022-12-08 with --release

 arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json --release
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.84
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling avr-std-stub v1.0.3
   Compiling arduino_test v0.1.0 (/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test)
error: linking with `avr-gcc` failed: exit status: 1
  |
  = note: "avr-gcc" "-mmcu=atmega4809" "-B./packs/gcc/dev/atmega4809/" "/tmp/rustcPtISzx/symbols.o" "/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps/arduino_test-b4126c1cca60c38f.arduino_test.968f6c9b-cgu.0.rcgu.o" "-Wl,--as-needed" "-L" "/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps" "-L" "/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/release/deps" "-L" "/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/avr-4809/lib" "-Wl,-Bstatic" "/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps/libcompiler_builtins-0dc899707a19c0d5.rlib" "-Wl,-Bdynamic" "-lgcc" "-Wl,-znoexecstack" "-L" "/home/n3m0/.rustup/toolchains/nightly-2022-12-08-x86_64-unknown-linux-gnu/lib/rustlib/avr-4809/lib" "-o" "/home/n3m0/Mounts/DATA3/rust_lang_tuts/arduino_test/target/avr-4809/release/deps/arduino_test-b4126c1cca60c38f.elf" "-Wl,--gc-sections" "-no-pie" "-Wl,-O1"
  = note: /usr/bin/avr-ld: avr architecture of input file `/tmp/rustcPtISzx/symbols.o' is incompatible with avr:103 output
          collect2: error: ld returned 1 exit status

error: could not compile `arduino_test` due to previous error;

using latest nighly-2023-05-30 with --release

 arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json --release
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.92
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling avr-std-stub v1.0.3
LLVM ERROR: Expected a constant shift amount!
error: could not compile `compiler_builtins` (lib)
warning: build failed, waiting for other jobs to finish...

using latest nighly-2023-05-30 without --release

arduino_test git:(master) ✗ cargo build -Z build-std=core --target ./avr-4809.json
   Compiling core v0.0.0 (/home/n3m0/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (/home/n3m0/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling compiler_builtins v0.1.92
error: ran out of registers during register allocation

error: could not compile `core` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...

anyone know how to solve this..?

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.O-AVRTarget: AVR processors (ATtiny, ATmega, etc.)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions