Rust Documentation: Hello World on SPARC does not work anymore
Summary
Executing the exact instructions from the rtems user manual results in a hello_rtems_sparc.exe
executable that when run does not print Hello from Rust
(but crashes)? Currently, the output looks like:
RTEMS Testing - Run, 6.0.not_released
Command Line: /opt/rtems/6/bin/rtems-run --rtems-bsp=leon3-sis hello_rtems_sparc.exe
Host: Linux dbcc3c47aca7 5.14.21-150500.55.68-default #1 SMP PREEMPT_DYNAMIC Wed Jun 5 21:39:05 UTC 2024 (40e256a) x86_64
Python: 3.12.3 (main, Jul 31 2024, 17:43:48) [GCC 13.2.0]
Host: Linux-5.14.21-150500.55.68-default-x86_64-with-glibc2.39 (Linux dbcc3c47aca7 5.14.21-150500.55.68-default #1 SMP PREEMPT_DYNAMIC Wed Jun 5 21:39:05 UTC 2024 (40e256a) x86_64 x86_64)
SIS - SPARC/RISCV instruction simulator 2.30, copyright Jiri Gaisler 2020
Bug-reports to jiri@gaisler.se
LEON3 emulation enabled, 4 cpus online, delta 50 clocks
Loaded hello_rtems_sparc.exe, entry 0x40000000
cpu 0 in error mode (tt = 0x02)
186150 40019314: 02d48b00 unknown opcode: 0x02d48b00
Run time : 0:00:00.254975
But it should look like:
RTEMS Testing - Run, 6.0.not_released
Command Line: /opt/rtems/6/bin/rtems-run --rtems-bsp=leon3-sis hello_rtems_sparc.exe
Host: Linux 22a657516d60 5.14.21-150500.55.68-default #1 SMP PREEMPT_DYNAMIC Wed Jun 5 21:39:05 UTC 2024 (40e256a) x86_64
Python: 3.12.3 (main, Apr 10 2024, 05:33:47) [GCC 13.2.0]
Host: Linux-5.14.21-150500.55.68-default-x86_64-with-glibc2.39 (Linux 22a657516d60 5.14.21-150500.55.68-default #1 SMP PREEMPT_DYNAMIC Wed Jun 5 21:39:05 UTC 2024 (40e256a) x86_64 x86_64)
SIS - SPARC/RISCV instruction simulator 2.30, copyright Jiri Gaisler 2020
Bug-reports to jiri@gaisler.se
LEON3 emulation enabled, 4 cpus online, delta 50 clocks
Loaded hello_rtems_sparc.exe, entry 0x40000000
Hello from Rust
cpu 0 in error mode (tt = 0x80)
218950 40019060: 91d02000 ta 0x0
Run time : 0:00:00.255040
The first known buggy build was:
Version/Commmit | |
---|---|
Date: | 2024-08-01T02:33:11+02:00 |
rtems-docs: | 05f9a3d5 |
rtems-source-builder: | 892e966e4331f977cca8c83fc3bc22c8fa9d2754 |
rtems: | 30ae3ef9dae36d6bfce650567af55000ca018650 |
cargo: | 1.80.0 (376290515 2024-07-16) |
The last known good build was:
Version/Commmit | |
---|---|
Date: | 2024-07-29T02:33:15+02:00 |
rtems-docs: | 05f9a3d5 |
rtems-source-builder: | 892e966e4331 |
rtems: | 807070a696a93c1dae09f527efd2a516b01d7277 |
cargo: | 1.80.0 (376290515 2024-07-16) |
The rtems, rtems-source-builder, rtems-docs git commits seem to not affect the outcome. Hence, I assume something has changed in Rust. Since the build for SPARC still uses Rust "nightly", its worth a try whether the "nightly" is still needed.
The build of hello world for Risc V (which is also part of the rtems user manual instructions) is not affected and works fine.
Steps to reproduce
Follow the instructions in Bare Metal Rust with RTEMS