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