Add FreeBSD x86_64 and AArch64 compiler target contracts
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
Companion to #386, which tracks the FreeBSD `std::sys` platform layer. This issue covers compiler target, object, linker, CRT, and C ABI contracts.
## Targets
- `x86_64-unknown-freebsd`
- `aarch64-unknown-freebsd`
## Scope
- Register exact ELF target specs and target-attribute values.
- Define FreeBSD linker arguments, startup objects, dynamic loader, default libraries, and sysroot discovery/override rules.
- Validate the x86_64 SysV and AArch64 procedure-call classifiers against FreeBSD C fixtures rather than assuming Linux compatibility.
- Add object/link contract tests on Linux and runtime tests on a FreeBSD runner or VM when available.
- Keep standard-library porting in #386.
## Completion criteria
- [ ] Both triples emit correct ELF objects.
- [ ] `wavec print target-spec` exposes FreeBSD-specific runtime requirements.
- [ ] Hosted linking succeeds with an explicit complete FreeBSD sysroot.
- [ ] C interop fixtures pass on a real FreeBSD environment.
- [ ] Documentation distinguishes compile-only from runtime-verified support.
Contributor guide
Research direction
Start with `wavec print target-spec` for both FreeBSD triples, then locate the compiler's target-contract implementation and existing object/link tests. Compare emitted ELF objects and linker behavior with the stated FreeBSD requirements, run the C interop fixtures on a FreeBSD runner or VM when available, and document the distinction between compile-only and runtime-verified support.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100