Skip to content

Commit 9d89b63

Browse files
committed
Rework the test.sh file.
Now it's much easier to see the targets and the features enabled.
1 parent f277c1e commit 9d89b63

File tree

5 files changed

+48
-104
lines changed

5 files changed

+48
-104
lines changed

.cargo/config.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,3 @@ runner = "qemu-system-arm -machine versatileab -cpu arm926 -semihosting -nograph
2727

2828
[target.thumbv4t-none-eabi]
2929
runner = "qemu-system-arm -machine versatileab -cpu pxa250 -semihosting -nographic -audio none -kernel"
30-
31-
[unstable]
32-
build-std = ["core", "alloc"]

examples/mps3-an536/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ arm-targets = {version = "0.3.0", path = "../../arm-targets"}
2929

3030
[features]
3131
eabi-fpu = ["aarch32-rt/eabi-fpu"]
32+
fpu-d32 = ["aarch32-rt/fpu-d32"]
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
[toolchain]
2-
channel = "nightly"
2+
channel = "nightly-2025-10-29"
3+
targets = [
4+
"armv8r-none-eabihf",
5+
]
6+
components = ["rust-src"]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[toolchain]
2+
channel = "nightly-2025-10-29"
3+
targets = [
4+
"armv7r-none-eabi",
5+
"armv7r-none-eabihf",
6+
"armv7a-none-eabi",
7+
"armv7a-none-eabihf",
8+
]
9+
components = ["rust-src"]

tests.sh

Lines changed: 33 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
# Runs a series of sample programs in QEMU and checks that the standard output
44
# is as expected.
55

6-
rustup target add armv7r-none-eabi
7-
rustup target add armv7r-none-eabihf
8-
rustup target add armv7a-none-eabi
9-
rustup component add rust-src
10-
116
# Set this to 1 to exit on the first error
127
EXIT_FAST=0
138

@@ -25,8 +20,8 @@ fail() {
2520

2621
mkdir -p ./target
2722

28-
versatile_ab_cargo="--manifest-path examples/versatileab/Cargo.toml"
29-
mps3_an536_cargo="--manifest-path examples/mps3-an536/Cargo.toml"
23+
versatile_ab_cargo=""
24+
mps3_an536_cargo=""
3025

3126
my_diff() {
3227
file_a=$1
@@ -46,101 +41,39 @@ my_diff() {
4641
fi
4742
}
4843

49-
# armv7r-none-eabi tests
50-
cargo build ${versatile_ab_cargo} --target=armv7r-none-eabi || exit 1
51-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
52-
filename=${bin_path##*/}
53-
binary=${filename%.rs}
54-
cargo run ${versatile_ab_cargo} --target=armv7r-none-eabi --bin $binary > ./target/$binary-armv7r-none-eabi.out
55-
my_diff ./examples/versatileab/reference/$binary-armv7r-none-eabi.out ./target/$binary-armv7r-none-eabi.out || fail $binary "armv7r-none-eabi"
56-
done
57-
58-
# armv7r-none-eabihf tests
59-
cargo build ${versatile_ab_cargo} --target=armv7r-none-eabihf || exit 1
60-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
61-
filename=${bin_path##*/}
62-
binary=${filename%.rs}
63-
cargo run ${versatile_ab_cargo} --target=armv7r-none-eabihf --bin $binary > ./target/$binary-armv7r-none-eabihf.out
64-
my_diff ./examples/versatileab/reference/$binary-armv7r-none-eabihf.out ./target/$binary-armv7r-none-eabihf.out || fail $binary "armv7r-none-eabihf"
65-
done
66-
67-
# armv7a-none-eabi tests
68-
cargo build ${versatile_ab_cargo} --target=armv7a-none-eabi || exit 1
69-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
70-
filename=${bin_path##*/}
71-
binary=${filename%.rs}
72-
cargo run ${versatile_ab_cargo} --target=armv7a-none-eabi --bin $binary > ./target/$binary-armv7a-none-eabi.out
73-
my_diff ./examples/versatileab/reference/$binary-armv7a-none-eabi.out ./target/$binary-armv7a-none-eabi.out || fail $binary "armv7a-none-eabi"
74-
done
75-
76-
# armv7a-none-eabihf tests
77-
RUSTC_BOOTSTRAP=1 cargo build ${versatile_ab_cargo} --target=armv7a-none-eabihf || exit 1
78-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
79-
filename=${bin_path##*/}
80-
binary=${filename%.rs}
81-
RUSTC_BOOTSTRAP=1 cargo run ${versatile_ab_cargo} --target=armv7a-none-eabihf --bin $binary > ./target/$binary-armv7a-none-eabihf.out
82-
my_diff ./examples/versatileab/reference/$binary-armv7a-none-eabihf.out ./target/$binary-armv7a-none-eabihf.out || fail $binary "armv7a-none-eabihf"
83-
done
84-
85-
# armv7a-none-eabihf double-precision tests
86-
RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Ctarget-feature=+d32" cargo build ${versatile_ab_cargo} --target=armv7a-none-eabihf --features=fpu-d32 || exit 1
87-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
88-
filename=${bin_path##*/}
89-
binary=${filename%.rs}
90-
RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Ctarget-feature=+d32" cargo run ${versatile_ab_cargo} --target=armv7a-none-eabihf --bin $binary --features=fpu-d32 > ./target/$binary-armv7a-none-eabihf-dp.out
91-
my_diff ./examples/versatileab/reference/$binary-armv7a-none-eabihf.out ./target/$binary-armv7a-none-eabihf-dp.out || fail $binary "armv7a-none-eabihf"
92-
done
93-
94-
# armv5te-none-eabi tests
95-
RUSTC_BOOTSTRAP=1 cargo build ${versatile_ab_cargo} --target=armv5te-none-eabi
96-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
97-
filename=${bin_path##*/}
98-
binary=${filename%.rs}
99-
RUSTC_BOOTSTRAP=1 cargo run ${versatile_ab_cargo} --target=armv5te-none-eabi --bin $binary > ./target/$binary-armv5te-none-eabi.out
100-
my_diff ./examples/versatileab/reference/$binary-armv5te-none-eabi.out ./target/$binary-armv5te-none-eabi.out || fail $binary "armv5te-none-eabi"
101-
done
102-
103-
# thumbv5te-none-eabi tests
104-
RUSTC_BOOTSTRAP=1 cargo build ${versatile_ab_cargo} --target=thumbv5te-none-eabi
105-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
106-
filename=${bin_path##*/}
107-
binary=${filename%.rs}
108-
RUSTC_BOOTSTRAP=1 cargo run ${versatile_ab_cargo} --target=thumbv5te-none-eabi --bin $binary > ./target/$binary-thumbv5te-none-eabi.out
109-
my_diff ./examples/versatileab/reference/$binary-thumbv5te-none-eabi.out ./target/$binary-thumbv5te-none-eabi.out || fail $binary "thumbv5te-none-eabi"
110-
done
111-
112-
# armv4t-none-eabi tests
113-
RUSTC_BOOTSTRAP=1 cargo build ${versatile_ab_cargo} --target=armv4t-none-eabi
114-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
115-
filename=${bin_path##*/}
116-
binary=${filename%.rs}
117-
RUSTC_BOOTSTRAP=1 cargo run ${versatile_ab_cargo} --target=armv4t-none-eabi --bin $binary > ./target/$binary-armv4t-none-eabi.out
118-
my_diff ./examples/versatileab/reference/$binary-armv4t-none-eabi.out ./target/$binary-armv4t-none-eabi.out || fail $binary "armv4t-none-eabi"
119-
done
120-
121-
# thumbv4t-none-eabi tests
122-
RUSTC_BOOTSTRAP=1 cargo build ${versatile_ab_cargo} --target=thumbv4t-none-eabi
123-
for bin_path in $(ls examples/versatileab/src/bin/*.rs); do
124-
filename=${bin_path##*/}
125-
binary=${filename%.rs}
126-
RUSTC_BOOTSTRAP=1 cargo run ${versatile_ab_cargo} --target=thumbv4t-none-eabi --bin $binary > ./target/$binary-thumbv4t-none-eabi.out
127-
my_diff ./examples/versatileab/reference/$binary-thumbv4t-none-eabi.out ./target/$binary-thumbv4t-none-eabi.out || fail $binary "thumbv4t-none-eabi"
128-
done
129-
130-
# These tests only run on QEMU 9 or higher.
131-
# Ubuntu 24.04 supplies QEMU 8, which doesn't support the machine we have configured for this target
132-
RUSTC_BOOTSTRAP=1 cargo build ${mps3_an536_cargo} --target=armv8r-none-eabihf || exit 1
133-
if qemu-system-arm --version | grep "version \(9\|10\)"; then
134-
# armv8r-none-eabihf tests
135-
for bin_path in $(ls examples/mps3-an536/src/bin/*.rs); do
136-
filename=${bin_path##*/}
44+
run_tests() {
45+
directory=$1
46+
target="$2"
47+
flags=$3
48+
echo "Running directory=$directory target=$target flags=$flags"
49+
pushd $directory
50+
cargo build --target=$target $flags || exit 1
51+
for bin_path in src/bin/*.rs; do
52+
filename=$(basename $bin_path)
13753
binary=${filename%.rs}
138-
RUSTC_BOOTSTRAP=1 cargo run ${mps3_an536_cargo} --target=armv8r-none-eabihf --bin $binary > ./target/$binary-armv8r-none-eabihf.out
139-
my_diff ./examples/mps3-an536/reference/$binary-armv8r-none-eabihf.out ./target/$binary-armv8r-none-eabihf.out || fail $binary "armv8r-none-eabihf"
54+
cargo run --target=$target --bin $binary $flags > ./target/$binary-$target.out
55+
my_diff ./reference/$binary-$target.out ./target/$binary-$target.out || fail $binary $target
14056
done
141-
RUSTC_BOOTSTRAP=1 cargo run ${mps3_an536_cargo} --target=armv8r-none-eabihf --bin smp_test -- -smp 2 > ./target/smp_test-armv8r-none-eabihf_smp2.out
142-
my_diff ./examples/mps3-an536/reference/smp_test-armv8r-none-eabihf_smp2.out ./target/smp_test-armv8r-none-eabihf_smp2.out || fail smp_test "armv8r-none-eabihf"
143-
fi
57+
popd
58+
}
59+
60+
run_tests examples/versatileab armv7r-none-eabi ""
61+
run_tests examples/versatileab armv7r-none-eabihf ""
62+
run_tests examples/versatileab armv7a-none-eabi ""
63+
run_tests examples/versatileab armv7a-none-eabihf ""
64+
RUSTFLAGS="-Ctarget-feature=+d32" run_tests examples/versatileab armv7a-none-eabihf "--features=fpu-d32"
65+
run_tests examples/versatileab armv5te-none-eabi "-Zbuild-std=core"
66+
run_tests examples/versatileab armv4t-none-eabi "-Zbuild-std=core"
67+
run_tests examples/versatileab thumbv5te-none-eabi "-Zbuild-std=core"
68+
run_tests examples/versatileab thumbv4t-none-eabi "-Zbuild-std=core"
69+
run_tests examples/mps3-an536 armv8r-none-eabihf ""
70+
RUSTFLAGS="-Ctarget-cpu=cortex-r52" run_tests examples/mps3-an536 armv8r-none-eabihf "--features=fpu-d32"
71+
72+
# Special case the SMP test. You can't run the normal examples with two CPUs because nothing stops the second CPU from running :/
73+
pushd examples/mps3-an536
74+
cargo run --target=armv8r-none-eabihf --bin smp_test -- --smp 2 > ./target/smp_test-armv8r-none-eabihf_smp2.out
75+
my_diff ./reference/smp_test-armv8r-none-eabihf_smp2.out ./target/smp_test-armv8r-none-eabihf_smp2.out || fail smp_test armv8r-none-eabihf
76+
popd
14477

14578
if [ "$FAILURE" == "1" ]; then
14679
echo "***************************************************"

0 commit comments

Comments
 (0)