From 07bb89a02d37e2158023ebf4e23799e54c7c4f31 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Tue, 11 Jun 2019 16:57:59 +0200 Subject: [PATCH] Fix it --- Cargo.lock | 20 +++++++++++--------- Cargo.toml | 4 ++-- src/metadata.rs | 7 ++++++- test.sh | 2 -- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dd3ef80c150..ecd803172bc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -171,7 +171,7 @@ source = "git+https://github.com/CraneStation/cranelift.git#f3f7cadd0157d06089c9 dependencies = [ "cranelift-codegen 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", "cranelift-module 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", - "faerie 0.10.0", + "faerie 0.10.0 (git+https://github.com/m4b/faerie.git)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "goblin 0.0.21 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -273,6 +273,7 @@ dependencies = [ [[package]] name = "faerie" version = "0.10.0" +source = "git+https://github.com/m4b/faerie.git#f6ce890950950d9ee85b7cb5de5fff9c9291f194" dependencies = [ "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -357,7 +358,7 @@ dependencies = [ [[package]] name = "goblin" version = "0.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/m4b/goblin?rev=f34cf128fb4d1f3c93e5cf129cf673c9d787217b#f34cf128fb4d1f3c93e5cf129cf673c9d787217b" dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -462,11 +463,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "object" version = "0.12.0" +source = "git+https://github.com/gimli-rs/object.git#aced06a20eb59867c88e23c03e15613ffd582618" dependencies = [ "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "goblin 0.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "goblin 0.0.22 (git+https://github.com/m4b/goblin?rev=f34cf128fb4d1f3c93e5cf129cf673c9d787217b)", "parity-wasm 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)", "scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -474,9 +477,6 @@ dependencies = [ name = "parity-wasm" version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "plain" @@ -686,11 +686,11 @@ dependencies = [ "cranelift-faerie 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", "cranelift-module 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", "cranelift-simplejit 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", - "faerie 0.10.0", + "faerie 0.10.0 (git+https://github.com/m4b/faerie.git)", "gimli 0.18.0 (git+https://github.com/gimli-rs/gimli.git)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "object 0.12.0", + "object 0.12.0 (git+https://github.com/gimli-rs/object.git)", "target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -975,6 +975,7 @@ dependencies = [ "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +"checksum faerie 0.10.0 (git+https://github.com/m4b/faerie.git)" = "" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" @@ -983,7 +984,7 @@ dependencies = [ "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum gimli 0.18.0 (git+https://github.com/gimli-rs/gimli.git)" = "" "checksum goblin 0.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6a4013e9182f2345c6b7829b9ef6e670bce0dfca12c6f974457ed2160c2c7fe9" -"checksum goblin 0.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "7f55d53401eb2fd30afd025c570b1946b6966344acf21b42e31286f3bf89e6a8" +"checksum goblin 0.0.22 (git+https://github.com/m4b/goblin?rev=f34cf128fb4d1f3c93e5cf129cf673c9d787217b)" = "" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" @@ -998,6 +999,7 @@ dependencies = [ "checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +"checksum object 0.12.0 (git+https://github.com/gimli-rs/object.git)" = "" "checksum parity-wasm 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)" = "20d7e522a7f994cc4ae32970b1ce0d99ecf91b8e1df080517a26faa6d2e2ee62" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" diff --git a/Cargo.toml b/Cargo.toml index 1b505f7e6b8..59d66d07fa9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,8 +41,8 @@ object = "0.12.0" cranelift-simplejit = { git = "https://github.com/CraneStation/cranelift.git" } [patch.crates-io] -faerie = { path = "../faerie" } -object = { path = "../object" } +faerie = { git = "https://github.com/m4b/faerie.git" } +object = { git = "https://github.com/gimli-rs/object.git" } [profile.dev.overrides."*"] opt-level = 3 diff --git a/src/metadata.rs b/src/metadata.rs index 8abf0dcc108..56ce208a71a 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -93,7 +93,12 @@ pub fn write_metadata<'a, 'gcx>( artifact.declare(".rustc", faerie::Decl::section(faerie::SectionKind::Data)).unwrap(); artifact.define_with_symbols(".rustc", compressed, { let mut map = std::collections::BTreeMap::new(); - map.insert(rustc::middle::exported_symbols::metadata_symbol_name(tcx), 0); + // FIXME implement faerie elf backend section custom symbols + // For MachO this is necessary to prevent the linker from throwing away the .rustc section, + // but for ELF it isn't. + if tcx.sess.target.target.options.is_like_osx { + map.insert(rustc::middle::exported_symbols::metadata_symbol_name(tcx), 0); + } map }).unwrap(); diff --git a/test.sh b/test.sh index 6573bdda6f3..20f4a6bd1f4 100755 --- a/test.sh +++ b/test.sh @@ -7,8 +7,6 @@ mkdir -p target/out/clif echo "[BUILD] mini_core" $RUSTC example/mini_core.rs --crate-name mini_core --crate-type dylib -Csave-temps -objdump -section-headers target/out/libmini_core.dylib - echo "[BUILD] example" $RUSTC example/example.rs --crate-type lib