Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
support building on illumos systems (#1854)
### Issues: n/a ### Description of changes: The team that works on [awslabs/tough](https://github.com/awslabs/tough) wants to support using the aws-lc-rs Rust crate (awslabs/tough#824). As one of several downstream consumers of tough outside of AWS, we were asked for feedback. Oxide uses tough as part of our product which runs on the illumos operating system. When linking Rust code using aws-lc-rs, the linker cannot find several `aws_lc_*` symbols: ``` Undefined first referenced symbol in file aws_lc_0_21_1_bn_gather5 /home/iliana/git/omicron/target/debug/deps/libaws_lc_sys-ff0ab07b18206e1f.rlib(bcm.c.o) aws_lc_0_21_1_rsaz_1024_red2norm_avx2 /home/iliana/git/omicron/target/debug/deps/libaws_lc_sys-ff0ab07b18206e1f.rlib(bcm.c.o) aws_lc_0_21_1_aesni_gcm_encrypt /home/iliana/git/omicron/target/debug/deps/libaws_lc_sys-ff0ab07b18206e1f.rlib(bcm.c.o) aws_lc_0_21_1_chacha20_poly1305_seal /home/iliana/git/omicron/target/debug/deps/libaws_lc_sys-ff0ab07b18206e1f.rlib(e_chacha20poly1305.c.o) aws_lc_0_21_1_chacha20_poly1305_open /home/iliana/git/omicron/target/debug/deps/libaws_lc_sys-ff0ab07b18206e1f.rlib(e_chacha20poly1305.c.o) [ ... this goes on for some hundreds of lines ... ] ``` `uname -p` on illumos systems returns `i386` on 64-bit machines. This resulted in assembly code not being linked into the AWS-LC library due to architecture misdetection. To determine the native instruction set, `isainfo -n` is used instead. Once these cryptic errors were out of the way, we got a more normal linking error indicating some missing libraries; symbols that are in the libc on other platforms are in separate libraries on illumos. I'm sending this PR on behalf of my coworker, @jclulow, but I can help handle any requested changes. ### Call-outs: n/a ### Testing: Tested on an illumos system via aws-lc-rs by patching the crate in Cargo.toml with: ``` [patch.crates-io.aws-lc-sys] git = "https://github.com/oxidecomputer/aws-lc-rs" branch = "illumos/aws-lc-sys/v0.21.1" ``` which updates the AWS-LC submodule to this commit. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. --------- Co-authored-by: Joshua M. Clulow <[email protected]>
- Loading branch information