You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One of our supported targets is 32-bit ARM. It can be quite challenging to construct a realistic ARM32 environment where you can build or run tests in a reasonable amount of time. Thankfully, it's possible to configure an ARM64 linux environment so that you can cross-build from ARM64 to ARM32, and run tests there using native hardware support instead of software emulation. This is not possible on ARM64-based Windows (this functionality is not offered by the OS).
4
+
5
+
## Configuring your ARM64 environment to run ARM32 binaries
6
+
7
+
By default your ARM64 Linux install probably doesn't have support for ARM32 binaries enabled, which will cause running the binaries to fail with a cryptic error. So you'll need to add the architecture to dpkg and install some core userspace libraries that CoreCLR will need to actually run your tests, which on Debian or Ubuntu will look like:
The following additional packages will be installed:
17
+
```
18
+
19
+
Note that when installing a package for another architecture, you need to suffix the package name with the architecture name. For me, the three packages above were sufficient to run an ARM32 JIT test.
20
+
21
+
## Cross-building for ARM32 on ARM64
22
+
23
+
Follow the steps from https://github.com/dotnet/runtime/blob/main/docs/workflow/building/coreclr/cross-building.md#linux-cross-building as-is. You should end up with a `linux.arm``Core_Root` and test artifacts.
24
+
25
+
## Running an ARM32 test in your ARM64 environment
26
+
27
+
We're finally ready to go, probably. Export an environment variable to point to your ARM32 core root, and then run your test, i.e.:
0 commit comments