about summary refs log tree commit diff
path: root/src/test/run-make-fulldeps
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-05-14 12:58:58 +0000
committerbors <bors@rust-lang.org>2021-05-14 12:58:58 +0000
commit75da570d784a798a34ff1e5048cd9a6a2fb23170 (patch)
tree7e2ffecffbd250a725092db3d0bc5190c52b4fdb /src/test/run-make-fulldeps
parent36a4d14c7edba21bba14df00b9e6e4a111dfc6f2 (diff)
parent6381aaf8ae2df01cdb70b6f3123153cf4f1e03cd (diff)
downloadrust-75da570d784a798a34ff1e5048cd9a6a2fb23170.tar.gz
rust-75da570d784a798a34ff1e5048cd9a6a2fb23170.zip
Auto merge of #83640 - bjorn3:shared_metadata_reader, r=nagisa
Use the object crate for metadata reading

This allows sharing the metadata reader between cg_llvm, cg_clif and other codegen backends.

This is not currently useful for rlib reading with cg_spirv ([rust-gpu](https://github.com/EmbarkStudios/rust-gpu/)) as it uses tar rather than ar as .rlib format, but it is useful for dylib reading required for loading proc macros. (cc `@eddyb)`

The object crate is already trusted as dependency of libstd through backtrace. As far as I know it supports reading all object file formats used by targets for which we support rust dylibs with crate metadata, but I am not certain. If this happens to not be the case, I could keep using LLVM for reading dylib metadata.

Marked as WIP for a perf run and as it is based on #83637.
Diffstat (limited to 'src/test/run-make-fulldeps')
-rw-r--r--src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs14
1 files changed, 1 insertions, 13 deletions
diff --git a/src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs b/src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs
index 684e9760cc6..a9e99d3c10e 100644
--- a/src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs
+++ b/src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs
@@ -28,23 +28,11 @@ use rustc_target::spec::Target;
 use std::any::Any;
 use std::path::Path;
 
-pub struct NoLlvmMetadataLoader;
-
-impl MetadataLoader for NoLlvmMetadataLoader {
-    fn get_rlib_metadata(&self, _: &Target, filename: &Path) -> Result<MetadataRef, String> {
-        unreachable!("some_crate.rs shouldn't depend on any external crates");
-    }
-
-    fn get_dylib_metadata(&self, target: &Target, filename: &Path) -> Result<MetadataRef, String> {
-        unreachable!("some_crate.rs shouldn't depend on any external crates");
-    }
-}
-
 struct TheBackend;
 
 impl CodegenBackend for TheBackend {
     fn metadata_loader(&self) -> Box<MetadataLoaderDyn> {
-        Box::new(NoLlvmMetadataLoader)
+        Box::new(rustc_codegen_ssa::back::metadata::DefaultMetadataLoader)
     }
 
     fn provide(&self, providers: &mut Providers) {}