X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_trans%2Fback%2Farchive.rs;h=31dee241de440d1edddb9e5d597d52303ca6f45e;hb=6f4ab9458a7ad06c8ce630604f533c8c0c0acef4;hp=0f908b7d0698bc48e7bd1fd529d46212c5433a0f;hpb=d7df6dcd7399e0c49b6008ab3b82c979dba835a6;p=rust.git diff --git a/src/librustc_trans/back/archive.rs b/src/librustc_trans/back/archive.rs index 0f908b7d069..31dee241de4 100644 --- a/src/librustc_trans/back/archive.rs +++ b/src/librustc_trans/back/archive.rs @@ -20,6 +20,7 @@ use libc; use llvm::archive_ro::{ArchiveRO, Child}; use llvm::{self, ArchiveKind}; +use metadata::METADATA_FILENAME; use rustc::session::Session; pub struct ArchiveConfig<'a> { @@ -88,7 +89,7 @@ impl<'a> ArchiveBuilder<'a> { /// by `config`. pub fn new(config: ArchiveConfig<'a>) -> ArchiveBuilder<'a> { ArchiveBuilder { - config: config, + config, removals: Vec::new(), additions: Vec::new(), should_update_symbols: false, @@ -125,7 +126,7 @@ fn src_archive(&mut self) -> Option<&ArchiveRO> { Some(ref src) => src, None => return None, }; - self.src_archive = Some(ArchiveRO::open(src)); + self.src_archive = Some(ArchiveRO::open(src).ok()); self.src_archive.as_ref().unwrap().as_ref() } @@ -158,11 +159,9 @@ pub fn add_rlib(&mut self, // Ignoring all bytecode files, no matter of // name let bc_ext = ".bytecode.deflate"; - let metadata_filename = - self.config.sess.cstore.metadata_filename().to_owned(); self.add_archive(rlib, move |fname: &str| { - if fname.ends_with(bc_ext) || fname == metadata_filename { + if fname.ends_with(bc_ext) || fname == METADATA_FILENAME { return true } @@ -187,12 +186,11 @@ fn add_archive(&mut self, archive: &Path, skip: F) where F: FnMut(&str) -> bool + 'static { let archive = match ArchiveRO::open(archive) { - Some(ar) => ar, - None => return Err(io::Error::new(io::ErrorKind::Other, - "failed to open archive")), + Ok(ar) => ar, + Err(e) => return Err(io::Error::new(io::ErrorKind::Other, e)), }; self.additions.push(Addition::Archive { - archive: archive, + archive, skip: Box::new(skip), }); Ok(())