diff options
| author | bors <bors@rust-lang.org> | 2024-08-15 14:13:52 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-08-15 14:13:52 +0000 |
| commit | d2b5aa6552c8acf67f38a2ad92062a32ec542f08 (patch) | |
| tree | 1899813d951bc263c5828d2e81de1ee228b84e25 /compiler/rustc_codegen_ssa/src/back | |
| parent | 3139ff09e9d07f7700f8d15ed25a231e29c43627 (diff) | |
| parent | 901c9daa05ec817c3a0f7aad87a928cfcfe00ce2 (diff) | |
| download | rust-d2b5aa6552c8acf67f38a2ad92062a32ec542f08.tar.gz rust-d2b5aa6552c8acf67f38a2ad92062a32ec542f08.zip | |
Auto merge of #128936 - bjorn3:fix_thin_archive_reading, r=jieyouxu
Support reading thin archives in ArArchiveBuilder And switch to using ArArchiveBuilder with the LLVM backend too now that all regressions are fixed. Fixes https://github.com/rust-lang/rust/issues/107407 Fixes https://github.com/rust-lang/rust/issues/107162 https://github.com/rust-lang/rust/issues/107495 has been fixed in a previous PR already.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/back')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/archive.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/archive.rs b/compiler/rustc_codegen_ssa/src/back/archive.rs index ce55d99f506..8eb44d12016 100644 --- a/compiler/rustc_codegen_ssa/src/back/archive.rs +++ b/compiler/rustc_codegen_ssa/src/back/archive.rs @@ -307,10 +307,15 @@ impl<'a> ArchiveBuilder for ArArchiveBuilder<'a> { let file_name = String::from_utf8(entry.name().to_vec()) .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; if !skip(&file_name) { - self.entries.push(( - file_name.into_bytes(), - ArchiveEntry::FromArchive { archive_index, file_range: entry.file_range() }, - )); + if entry.is_thin() { + let member_path = archive_path.parent().unwrap().join(Path::new(&file_name)); + self.entries.push((file_name.into_bytes(), ArchiveEntry::File(member_path))); + } else { + self.entries.push(( + file_name.into_bytes(), + ArchiveEntry::FromArchive { archive_index, file_range: entry.file_range() }, + )); + } } } |
