## Human Summary
Adds a script and Makefile target to build a release ADP binary on AIX. This comes with two intentional divergences from how we build on the other platforms:
- We can't use `cargo auditable` because it does not support XCOFF. Clanker tried to get it to work with some manual patching but wasn't able to. Seems like this will be a more significant contribution to upstream if we want this to work.
- We can't use link-time optimization (LTO) because it doesn't seem to work on AIX at all, even for a hello-world crate. This is actually called out in IBM's docs [here](https://www.ibm.com/docs/en/osfroa/1.90.0?topic=started-introducing-rustc-compiler).
Neither of these should be showstoppers, but please comment if they are. The plan will be to call this script from within the Agent's `packaging/aix` machinery when we do AIX builds. Working on that follow-up now.
## Summary
- Adds `make build-adp-aix` for native AIX ADP builds using the IBM Rust SDK and AIX Toolbox GCC toolchain.
- Adds `ci/tooling/build-adp-aix.sh` to record the AIX build environment and run the native Cargo build.
- Adds an `aix-optimized-release` Cargo profile that keeps the optimized-release binary settings that work on AIX while disabling LTO.
- Checks the major toolchain versions for cargo/rustc/gcc/g++ so AIX builds fail loudly if the toolchain drifts unexpectedly.
## Notes
- The AIX enablement and AWS-LC dependency changes from #2031, #2032, #2034, #2060, and #2082 are now on `main`; this PR is rebased on top of them and only carries the build helper/profile changes.
- `aws-lc-sys` is built from the bumped dependency without patching Cargo's registry cache.
- On the AIX test host, `gcc-8` fails in an AWS-LC compiler feature probe; `/opt/freeware/bin/gcc` (`gcc 13.3`) succeeds, so the helper defaults to that compiler.
- AIX currently does not use `cargo auditable`: cargo-auditable emits ELF/generic Unix linker inputs and flags that AIX's XCOFF linker rejects.
- AIX currently uses `aix-optimized-release` instead of `optimized-release`: the IBM Rust SDK 1.92 fails LTO even for a tiny hello-world crate with `failed to get bitcode from object file for LTO (Can't find section .ipa)`.
- The helper still uses the same metadata inputs that affect the ADP binary (`APP_FULL_NAME`, `APP_SHORT_NAME`, `APP_IDENTIFIER`, `APP_VERSION`, `APP_GIT_HASH`, `APP_BUILD_TIME`, `APP_DEV_BUILD`) and passes `BUILD_FEATURES` through to Cargo.
- Toolchain version prefixes are overrideable through `ADP_AIX_EXPECTED_*_PREFIX` variables when an intentional toolchain update occurs.
## Test Plan
- [x] `bash -n ci/tooling/build-adp-aix.sh`
- [x] `ADP_AIX_BUILD_DRY_RUN=true make build-adp-aix`
- [x] `cargo metadata --no-deps --format-version 1`
- [x] AIX: `CARGO_HOME=/opt/cargo-home-aix-adp-pr-stack CARGO_TARGET_DIR=/opt/saluki-aix-adp-pr-stack-target make build-adp-aix`
- [x] AIX: `/opt/saluki-aix-adp-pr-stack-target/aix-optimized-release/agent-data-plane --help`
- [x] AIX: `/opt/saluki-aix-adp-pr-stack-target/aix-optimized-release/agent-data-plane version`
- [x] Pre-commit hook: `fmt`, `check-clippy`, `check-licenses`, `check-deny`, `check-docs`, `generate-api-docs`
AIX toolchain observed:
- `cargo 1.92.0 (IBM Open SDK for Rust on AIX 1.92.0.0)`
- `rustc 1.92.0 (IBM Open SDK for Rust on AIX 1.92.0.0)`
- `gcc (GCC) 13.3.0`
- `g++ (GCC) 13.3.0`
AIX build result:
- `Finished aix-optimized-release profile [optimized + debuginfo] target(s) in 26m 22s`
- Binary: `64-bit XCOFF executable or object module not stripped`
Co-authored-by: travis.thieman <travis.thieman@datadoghq.com>
Summary
Bump
aws-lc-rsto1.17.1, which updatesaws-lc-systo0.42.0.aws-lc-sys0.42.0includes upstream AWS-LC changes from aws/aws-lc#3265 that guard Linux-only entropy code when compiling on AIX.Validation
cargo check -p saluki-tlsmake fmtcheckscargo clippy --all-targets --workspace -- -D warningscargo deny check --hide-inclusion-graph --show-stats(existing source warning only)