Go to file
bjorn3 dda5ea883a Fix debuginfo for machO
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
2019-10-19 15:37:07 +02:00
build_sysroot Reenable debug assertions for libstd on macOS 2019-09-14 12:49:23 +02:00
crate_patches Test rust-lang/regex example shootout-regex-dna 2019-07-30 13:37:54 +02:00
example Add extern type pointer cast tests 2019-09-21 11:32:11 +02:00
patches Rustup to rustc 1.40.0-nightly (237d54ff6 2019-10-15) 2019-10-16 18:43:52 +02:00
src Fix debuginfo for machO 2019-10-19 15:37:07 +02:00
.gitignore Libtest support 2019-08-09 12:46:24 +02:00
.travis.yml Fix travis ci config 2019-10-19 11:25:01 +02:00
abc.cpp Implement line debuginfo 2019-01-26 11:59:57 +01:00
Cargo.lock Make dylib metadata write backend agnostic 2019-10-18 18:31:38 +02:00
cargo.sh Test rust-lang/regex example shootout-regex-dna 2019-07-30 13:37:54 +02:00
Cargo.toml Test object::write backend on travis 2019-10-19 10:56:35 +02:00
clean_all.sh Remove simple-raytracer too in clean_all.sh 2019-09-12 20:22:09 +02:00
config.sh Rustup to rustc 1.40.0-nightly (2daa404e9 2019-10-02) 2019-10-03 17:22:01 +02:00
copy.clif
flamegraph.sh Stop using xargo for building the sysroot 2018-12-15 16:18:03 +01:00
LICENSE-APACHE
LICENSE-MIT
prepare.sh Add ebobby/simple-raytracer as benchmark 2019-08-30 17:31:37 +02:00
Readme.md Update Readme.md 2019-09-20 09:54:23 +02:00
rust-toolchain
test.sh Fix travis ci config 2019-10-19 11:25:01 +02:00

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

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.