In order to allow the compiler to default to ReleaseSafe when compiling
for fuzzing, Build.standardOptimizeOption has been changed to return an
optional value.
These have no clear use case, no coherent definition, and incomplete/broken
compiler and linker support.
If actually needed, they can be reintroduced if someone can present a reasonable
use case along with a plan for how they should be implemented consistently in
all backends and linkers.
This target is effectively dead. We'll keep it on life support in the compiler
and standard library, but there's no reason to waste CI resources on it at this
stage.
Making progress on incremental support in the COFF linker:
- Support reloc deletion by replacing them with .ABSOLUTE relocs (actually using the relocs from the free list will come later)
- Fixup setting sizes during incremental updates
- Fix incorrect modifications to the target_relocs linked list, add clarifying docs
- Enable `x86_64-windows-selfhosted` for test-incremental
Closes https://codeberg.org/ziglang/zig/issues/31773
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/36706
- fix some bit-rotted documentation
- fix some non-determinism that was causing these tests to be flaky
- also update padding on moved/resized events
- make `unit_padding` a header node
- refactor out `ifPos`
https://codeberg.org/ziglang/zig/issues/35267
This was already the case before b66fe565db since
isBSD() includes isDarwin() - a great example of why that function is bad,
because it was not intended for Darwin platforms to be included in that check.
Anyway, we now *do* want to disable the self-hosted backend for this target due
to the aforementioned linker bug, but let's actually be intentional about it.
These operating systems share a lineage but it almost never makes sense to
consider them together. Current-day Darwin being included is also likely to be a
surprise to many.
It cannot yet handle the behavior tests or compiler_rt tests due to them
using `@export` with `.internal`, but we can at least pass the standard
library and libc tests on x86_64.
Stack trace tests now run for most of the targets that we build module tests
for. However, we omit explicit targets that have no meaningful way of executing
on a non-native platform - whether through an emulator or 32-bit compatibility
layer. (There's no point building them if we cannot run them.) We also omit soft
float targets because there's nothing about float ABI that would affect stack
tracing. Finally, we currently omit Thumb targets because it turns out the stack
trace code does not work well at all on Thumb, and fixing this will likely
require us to implement ARM EHABI unwinding (#30931).
Error trace tests run on an even further reduced set of targets because we don't
care if libc is linked for those. Thumb is enabled here, though, since error
tracing seems unaffected by the aforementioned issue.
Also make these tests respect the various build options.
As far as CI goes, x86_64-linux will run the full set of tests (modulo
-Dtest-extra-targets) while all other machines only run native-compatible tests.
This provides a way to forward, e.g. the `-fqemu` argument from
`zig build` to a child process during Maker execution without providing
the information to the configuration logic.
Configuration logic, in general, should not try to guess whether an
executable will be able to be run on the host. This can only be
determined by trying to, and encountering failure, for example because
binfmt_misc might be installed. OS might handle illegal instruction
traps and emulate CPU features not available, etc.
skip_foreign_checks is the mechanism intended to handle this use case.
- make ubsan to be linkable by linker
- currently ignore bool vectors tests for `.stage2_wasm`, let defer handling it properly after supporting simd128 in backend (mainly tiny fixes + enabling it for matrix)
- I needed to refactor `wasm/abi.zig`, still bad