wavefnd / wavefnd/Wave

Add FreeBSD x86_64 and AArch64 compiler target contracts

Open
#413 0 comments 0 reactions 0 assignees View on GitHub
cross-platform enhancement help wanted os support
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.