linked-list-allocator icon indicating copy to clipboard operation
linked-list-allocator copied to clipboard

Can't use the crate for the target riscv32i-unknown-none-elf

Open 58celep58 opened this issue 2 years ago • 3 comments

I don't know if this is an issue and I would like to apologize for that. (It is my first issue that i wrote. )

What I did was only include the linked_list_allocator in the Cargo.toml .

/* Cargo.toml */

[dependencies]
linked_list_allocator = "0.10.4"

Terminal Output:

error[E0432]: unresolved import `core::sync::atomic::AtomicUsize`
  --> /home/user123/.cargo/registry/src/github.com-1ecc6299db9ec823/lock_api-0.4.9/src/remutex.rs:19:20
     |
19 |     sync::atomic::{AtomicUsize, Ordering},
     |                    ^^^^^^^^^^^ no `AtomicUsize` in `sync::atomic`

The problem is that the Riscv32i does not contain an atomic instruction set (A) and that is why the error occurs.

I do not know if I have forgotten something or if it is a bug.

58celep58 avatar Feb 16 '23 12:02 58celep58

Thanks a lot for reporting! See https://github.com/Amanieu/parking_lot/issues/277. Looks like the underlying issue is in rustc: https://github.com/rust-lang/rust/issues/99668.

phil-opp avatar Feb 22 '23 09:02 phil-opp

If you don't need the LockedHeap type, you should be able to work around this issue by disabling the default features in your dependency:

[dependencies]
linked_list_allocator = { version = "0.10.4", default-features = false }

phil-opp avatar Feb 22 '23 09:02 phil-opp

Probably it needs a feature from spin for portable_atomic: https://github.com/mvdnes/spin-rs/tree/master#feature-flags which allows: [target.] rustflags = [ "--cfg", "portable_atomic_unsafe_assume_single_core" ]

universal-git avatar Apr 20 '24 06:04 universal-git