Previously foreign statics would actually cause a local static to be
defined and exported. This issue was found because std::env::vars() was
found to return no env vars despite many being defined. This was caused
by libstd importing environ as foreign static. The accidental definition
of environ caused libstd to read a null pointer which was interpreted as
there being no environment variables at all.
Also fix tests. STDOUT is not defined by libc. The correct name is stdout.
This previously worked as STDOUT was incorrectly defined as null pointer
during codegen.
They are also removed from the prelude as per the decision in
https://github.com/rust-lang/rust/issues/87228.
stdarch and compiler-builtins are updated to work with the new, stable
asm! and global_asm! macros.
* Implement basic support for inline assembly
* Disable LTO
We don't support it yet at all
* Handle `inout(reg) var` correctly
Turns out that `+` readwrite output registers cannot be tied with
input variables.
* Add limited support for llvm_asm!
* Handle CHANNEL correctly
* Add support for arbitrary explicit registers
* Handle symbols properly
* Add rudimentary asm tests
* Exclude llvm_asm! tests from tests runs
* Insert `__builtin_unreachable()` after diverging asm blocks