dda5ea883a
This only fixes it when using object::write as backend, and not when using faerie. There were two problems: * object::write doesn't replace .debug_info with __debug_info, unlike faerie * machO requires section relative relocations, and not symbol relative relocations. When using symbol relative relocations, the linker interprets the relocations as section relative. Thus writing the wrong values to the debug sections. Fixes #303 |
||
---|---|---|
build_sysroot | ||
crate_patches | ||
example | ||
patches | ||
src | ||
.gitignore | ||
.travis.yml | ||
abc.cpp | ||
Cargo.lock | ||
cargo.sh | ||
Cargo.toml | ||
clean_all.sh | ||
config.sh | ||
copy.clif | ||
flamegraph.sh | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
prepare.sh | ||
Readme.md | ||
rust-toolchain | ||
test.sh |
WIP Cranelift codegen backend for rust
⚠⚠⚠ Threads and certain kinds of FFI don't work yet. ⚠⚠⚠
Building
$ git clone https://github.com/bjorn3/rustc_codegen_cranelift.git
$ cd rustc_codegen_cranelift
$ ./prepare.sh # download and patch sysroot src and install hyperfine for benchmarking
$ ./test.sh
Usage
$cg_clif_dir
is the directory you cloned this repo into in the following instruction.
Cargo
$ $cg_clif_dir/cargo.sh run
Rustc
$ rustc -Cpanic=abort -Zcodegen-backend=$cg_clif_dir/target/debug/librustc_codegen_cranelift.so --sysroot $cg_clif_dir/build_sysroot/sysroot my_crate.rs
Not yet supported
- Good non-rust abi support (several problems)
- Checked binops (some missing instructions in cranelift)
- Inline assembly (no cranelift support, not coming soon)
- SIMD (tracked here, some basic things work)
Troubleshooting
Can't compile
Try updating your nightly compiler. You can try to use an nightly a day or two older if updating rustc doesn't fix it. If you still can't compile it, please fill an issue.