tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: rust and rust-bin confusion
Hi,
On 2025/05/11 1:32, Michael van Elst wrote:
earmv6hf failed with:
rust-1.76:
Build enters infinite loop.
...
> This is in 32bit chroots on an aarch64 system which offers almost 4GB
address space to 32bit userland.
I can reproduce this failure. rust-bootstrap/bin/cargo stalls at
std::sys::pal::unix::os::getenv::{{closure}} indefinitely.
I **guess** this is due to the following sequence:
```
0x05e89a2c <+204>: ldrex r2, [r4]
...
0x05e89a3c <+220>: mcr 15, 0, r0, cr7, cr10, {5}
0x05e89a40 <+224>: strex r1, r3, [r4]
0x05e89a44 <+228>: cmp r1, #0
0x05e89a48 <+232>: bne 0x5e89a0c
```
Here, `mcr ...` is armv6 variant of `dmb`, which is dropped for
armv8, and emulated by illegal insn handler; reservation made by
`strex` is lost and `strex` always fails unconditionally.
BTW, armv7 has real `dmb`, which is valid also for armv8, and
similar failures do not happen, probably.
Thanks,
rin
Home |
Main Index |
Thread Index |
Old Index