Skip to content

Commit 4dcb501

Browse files
committed
link: rely on the default metadata loader.
1 parent 731a5e8 commit 4dcb501

File tree

2 files changed

+1
-42
lines changed

2 files changed

+1
-42
lines changed

crates/rustc_codegen_spirv/src/lib.rs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,9 @@ use rustc_codegen_ssa::traits::{
167167
};
168168
use rustc_codegen_ssa::{CodegenResults, CompiledModule, ModuleCodegen, ModuleKind};
169169
use rustc_data_structures::fx::FxHashMap;
170-
use rustc_data_structures::sync::MetadataRef;
171170
use rustc_errors::{ErrorReported, FatalError, Handler};
172171
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
173-
use rustc_middle::middle::cstore::{EncodedMetadata, MetadataLoader, MetadataLoaderDyn};
172+
use rustc_middle::middle::cstore::EncodedMetadata;
174173
use rustc_middle::mir::mono::{Linkage, MonoItem, Visibility};
175174
use rustc_middle::ty::print::with_no_trimmed_paths;
176175
use rustc_middle::ty::{self, query, DefIdTree, Instance, InstanceDef, TyCtxt};
@@ -262,18 +261,6 @@ impl ThinBufferMethods for SpirvThinBuffer {
262261
}
263262
}
264263

265-
struct SpirvMetadataLoader;
266-
267-
impl MetadataLoader for SpirvMetadataLoader {
268-
fn get_rlib_metadata(&self, _: &Target, path: &Path) -> Result<MetadataRef, String> {
269-
link::read_metadata(path)
270-
}
271-
272-
fn get_dylib_metadata(&self, target: &Target, path: &Path) -> Result<MetadataRef, String> {
273-
rustc_codegen_ssa::back::metadata::DefaultMetadataLoader.get_dylib_metadata(target, path)
274-
}
275-
}
276-
277264
#[derive(Clone)]
278265
struct SpirvCodegenBackend;
279266

@@ -299,10 +286,6 @@ impl CodegenBackend for SpirvCodegenBackend {
299286
}
300287
}
301288

302-
fn metadata_loader(&self) -> Box<MetadataLoaderDyn> {
303-
Box::new(SpirvMetadataLoader)
304-
}
305-
306289
fn provide(&self, providers: &mut query::Providers) {
307290
// This is a lil weird: so, we obviously don't support C ABIs at all. However, libcore does declare some extern
308291
// C functions:

crates/rustc_codegen_spirv/src/link.rs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModul
88
use rustc_codegen_ssa::back::write::CodegenContext;
99
use rustc_codegen_ssa::{CodegenResults, NativeLib, METADATA_FILENAME};
1010
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
11-
use rustc_data_structures::owning_ref::OwningRef;
12-
use rustc_data_structures::rustc_erase_owner;
13-
use rustc_data_structures::sync::MetadataRef;
1411
use rustc_errors::FatalError;
1512
use rustc_middle::bug;
1613
use rustc_middle::dep_graph::WorkProduct;
@@ -481,27 +478,6 @@ fn create_archive(files: &[&Path], metadata: &[u8], out_filename: &Path) {
481478
builder.into_inner().unwrap();
482479
}
483480

484-
pub fn read_metadata(rlib: &Path) -> Result<MetadataRef, String> {
485-
fn read_metadata_internal(rlib: &Path) -> Result<Option<MetadataRef>, std::io::Error> {
486-
let mut archive = Archive::new(File::open(rlib).unwrap());
487-
while let Some(entry) = archive.next_entry() {
488-
let mut entry = entry?;
489-
if entry.header().identifier() == METADATA_FILENAME.as_bytes() {
490-
let mut bytes = Vec::new();
491-
entry.read_to_end(&mut bytes)?;
492-
let buf: OwningRef<Vec<u8>, [u8]> = OwningRef::new(bytes);
493-
return Ok(Some(rustc_erase_owner!(buf.map_owner_box())));
494-
}
495-
}
496-
Ok(None)
497-
}
498-
match read_metadata_internal(rlib) {
499-
Ok(Some(m)) => Ok(m),
500-
Ok(None) => Err(format!("No .metadata file in rlib: {:?}", rlib)),
501-
Err(io) => Err(format!("Failed to read rlib at {:?}: {}", rlib, io)),
502-
}
503-
}
504-
505481
/// This is the actual guts of linking: the rest of the link-related functions are just digging through rustc's
506482
/// shenanigans to collect all the object files we need to link.
507483
fn do_link(

0 commit comments

Comments
 (0)