Skip to content

'LLVM ERROR: Expected a constant shift amount!' when compiling for avr-atmega328p #523

@campbellcole

Description

@campbellcole

When compiling the default project generated with cargo generate --git https://github.com/Rahix/avr-hal-template.git (following this tutorial), an LLVM error arises:

❯ cargo build  
   Compiling compiler_builtins v0.1.87
   Compiling nb v1.1.0
   Compiling ufmt-write v0.1.0
   Compiling bare-metal v1.0.0
   Compiling void v1.0.2
   Compiling vcell v0.1.3
   Compiling cfg-if v1.0.0
   Compiling embedded-storage v0.2.0
   Compiling cfg-if v0.1.10
   Compiling panic-halt v0.2.0
   Compiling ufmt v0.1.2
   Compiling ufmt v0.2.0
   Compiling avr-device v0.5.0
   Compiling nb v0.1.3
   Compiling embedded-hal v0.2.7
LLVM ERROR: Expected a constant shift amount!
error: could not compile `compiler_builtins` (lib)
warning: build failed, waiting for other jobs to finish...

I have tried searching for this error online and have found zero mentions of it, even outside the context of Rust.

The -vv argument produces the following output (trimmed to only show relevant compilations):

     Running `CARGO=/nix/store/q474abvwayiafhwiz2hgrlfhvp6h57qc-cargo-1.70.0-nightly-2023-03-27-x86_64-unknown-linux-gnu/bin/cargo CARGO_CRATE_NAME=compiler_builtins CARGO_MANIFEST_DIR=/home/campbell/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.87 CARGO_PKG_AUTHORS='Jorge Aparicio <japaricious@gmail.com>' CARGO_PKG_DESCRIPTION='Compiler intrinsics used by the Rust compiler. Also available for other targets
if necessary'\!'
' CARGO_PKG_HOMEPAGE='https://github.com/rust-lang/compiler-builtins' CARGO_PKG_LICENSE=MIT/Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=compiler_builtins CARGO_PKG_README=README.md CARGO_PKG_REPOSITORY='https://github.com/rust-lang/compiler-builtins' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.1.87 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=87 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/home/campbell/Projects/rust_arduino/target/debug/deps:/nix/store/ghajjbbn54cqqzimj1a8nfvxdhnvfzpd-rust-default-1.70.0-nightly-2023-03-27/lib:/nix/store/ghajjbbn54cqqzimj1a8nfvxdhnvfzpd-rust-default-1.70.0-nightly-2023-03-27/lib:/nix/store/pmk0760lk096rlf7blv5kr82mjs30j37-avr-libc-avr-2.1.0/lib' OUT_DIR=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/build/compiler_builtins-ad07b3c75d4d1d35/out RUSTC_BOOTSTRAP=1 rustc --crate-name compiler_builtins /home/campbell/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.87/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=277 --crate-type lib --emit=dep-info,metadata,link -C opt-level=s -C panic=abort -C linker-plugin-lto -C debuginfo=2 -C debug-assertions=on --cfg 'feature="compiler-builtins"' --cfg 'feature="core"' --cfg 'feature="default"' --cfg 'feature="rustc-dep-of-std"' -C metadata=a2638f5606e6709a -C extra-filename=-a2638f5606e6709a --out-dir /home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps --target /home/campbell/Projects/rust_arduino/avr-specs/avr-atmega328p.json -Z force-unstable-if-unmarked -L dependency=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps -L dependency=/home/campbell/Projects/rust_arduino/target/debug/deps --extern core=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps/librustc_std_workspace_core-ec64718225ecdf57.rmeta --cap-lints warn --cfg 'feature="unstable"'`

...

LLVM ERROR: Expected a constant shift amount!
warning: `compiler_builtins` (lib) generated 2 warnings
error: could not compile `compiler_builtins` (lib); 2 warnings emitted

Caused by:
  process didn't exit successfully: `CARGO=/nix/store/q474abvwayiafhwiz2hgrlfhvp6h57qc-cargo-1.70.0-nightly-2023-03-27-x86_64-unknown-linux-gnu/bin/cargo CARGO_CRATE_NAME=compiler_builtins CARGO_MANIFEST_DIR=/home/campbell/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.87 CARGO_PKG_AUTHORS='Jorge Aparicio <japaricious@gmail.com>' CARGO_PKG_DESCRIPTION='Compiler intrinsics used by the Rust compiler. Also available for other targets
  if necessary'\!'
  ' CARGO_PKG_HOMEPAGE='https://github.com/rust-lang/compiler-builtins' CARGO_PKG_LICENSE=MIT/Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=compiler_builtins CARGO_PKG_README=README.md CARGO_PKG_REPOSITORY='https://github.com/rust-lang/compiler-builtins' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.1.87 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=87 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/home/campbell/Projects/rust_arduino/target/debug/deps:/nix/store/ghajjbbn54cqqzimj1a8nfvxdhnvfzpd-rust-default-1.70.0-nightly-2023-03-27/lib:/nix/store/ghajjbbn54cqqzimj1a8nfvxdhnvfzpd-rust-default-1.70.0-nightly-2023-03-27/lib:/nix/store/pmk0760lk096rlf7blv5kr82mjs30j37-avr-libc-avr-2.1.0/lib' OUT_DIR=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/build/compiler_builtins-ad07b3c75d4d1d35/out RUSTC_BOOTSTRAP=1 rustc --crate-name compiler_builtins /home/campbell/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.87/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=277 --crate-type lib --emit=dep-info,metadata,link -C opt-level=s -C panic=abort -C linker-plugin-lto -C debuginfo=2 -C debug-assertions=on --cfg 'feature="compiler-builtins"' --cfg 'feature="core"' --cfg 'feature="default"' --cfg 'feature="rustc-dep-of-std"' -C metadata=a2638f5606e6709a -C extra-filename=-a2638f5606e6709a --out-dir /home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps --target /home/campbell/Projects/rust_arduino/avr-specs/avr-atmega328p.json -Z force-unstable-if-unmarked -L dependency=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps -L dependency=/home/campbell/Projects/rust_arduino/target/debug/deps --extern core=/home/campbell/Projects/rust_arduino/target/avr-atmega328p/debug/deps/librustc_std_workspace_core-ec64718225ecdf57.rmeta --cap-lints warn --cfg 'feature="unstable"'` (exit status: 101)

As you may have seen from the log files, I am using NixOS and I have a suspicion this is part of the problem. I have the appropriate toolchains installed, but I don't know if I've got them all:

nativeBuildInputs = (with pkgs; [
  pkg-config
  clang
  rust-analyzer
  avrdude
  (callPackage ./pkgs/ravedude { })
  cargo-generate
  cargo-outdated
]) ++ (with pkgs.pkgsCross.avr; [
  buildPackages.gcc
]);

buildInputs = (with pkgs; [
  (rust-bin.nightly.latest.default.override {
    extensions = [ "rust-src" ];
  })
]) ++ (with pkgs.pkgsCross.avr; [
  avrlibc
]);

LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;

Any pointers towards the cause of this issue would be greatly appreciated. Thank you for your time 😄

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions