apache / incubator-teaclave-trustzone-sdk

Teaclave TrustZone SDK enables safe, functional, and ergonomic development of trustlets.
https://teaclave.apache.org
Apache License 2.0
221 stars 62 forks source link

Build issues on aarch64 Linux hosts #135

Open msgilligan opened 6 months ago

msgilligan commented 6 months ago

I've been trying to build OP-TEE with Rust on an aarch64 Linux host. (Mostly Debian Bookworm in a VM on MacBook M1)

I've run into at least three issues so far and made a PR for one of them:

751 is not Rust-related, and is easily worked around with WITH_CXX_TESTS=n, but 752 is Rust-related and if anyone has any ideas on how to fix it, I would greatly appreciate hearing them.

msgilligan commented 6 months ago

We are making progress on this issue. Two of the three sub-issues above are now solved. Only https://github.com/OP-TEE/build/issues/752 remains.

msgilligan commented 6 months ago

I have reproduced this issue by following the instructions in this project's README.md on an aarch64 Linux (Debian) machine.

See Related PR #137.

msgilligan commented 5 months ago

I have created a multi-architecture Dockerfile/containerFile that works correctly under AMD64 (x86_64) and exhibits the linker error we have been seeing under ARM64 (aarch64) and uploaded it in a gist: https://gist.github.com/msgilligan/a36d61953d2caf60d33d233fed281c7b

Note that the exact error is ld.bfd: cannot find -lgcc_s: No such file or directory (In some earlier test configurations that I used the _s wasn't present.)

msgilligan commented 4 months ago

Note that since https://github.com/OP-TEE/build/pull/764 (and related changes) were merged to OP-TEE/build RUST_ENABLE defaults to n.

I'm assuming that if we can fix this issue that OP-TEE/build can default to RUST_ENABLE=y again.

b49020 commented 4 months ago

Thanks @msgilligan for continuously following this issue. It has been on my ToDo list. BTW, thanks for that docker fine which allowed me to reproduce it.

msgilligan commented 4 months ago

Thanks @msgilligan for continuously following this issue. It has been on my ToDo list. BTW, thanks for that docker fine which allowed me to reproduce it.

I really need this fixed as I'm trying to write a TA in Rust and my main development system is an ARM64 laptop (MacBook Pro M1 with Debian in a VM) so I am motivated to get it fixed. Unfortunately, I don't know much about Rust linking or the custom link options used for TAs.

I'm hoping this gets fixed by someone else, but I am willing to help with testing, documentation, or even coding a fix. Is there any documentation about the custom link options for TAs?