Auto merge of #106704 - ecnelises:big_archive, r=bjorn3

Support AIX-style archive type

Reading facility of AIX big archive has been supported by `object` since 0.30.0.

Writing facility of AIX big archive has already been supported by `ar_archive_writer`, but we need to bump the version to support the new archive type enum.
This commit is contained in:
bors 2023-04-19 21:21:17 +00:00
commit 39c6804b92
10 changed files with 49 additions and 40 deletions

View File

@ -4,12 +4,12 @@ version = 3
[[package]] [[package]]
name = "addr2line" name = "addr2line"
version = "0.17.0" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
dependencies = [ dependencies = [
"compiler_builtins", "compiler_builtins",
"gimli", "gimli 0.27.2",
"rustc-std-workspace-alloc", "rustc-std-workspace-alloc",
"rustc-std-workspace-core", "rustc-std-workspace-core",
] ]
@ -149,7 +149,7 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0639441fd17a3197d1cbca8dc8768cc172a63b64b4bb6c372e8f41ed0acc9bb" checksum = "b0639441fd17a3197d1cbca8dc8768cc172a63b64b4bb6c372e8f41ed0acc9bb"
dependencies = [ dependencies = [
"object 0.30.1", "object",
] ]
[[package]] [[package]]
@ -215,16 +215,16 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]] [[package]]
name = "backtrace" name = "backtrace"
version = "0.3.66" version = "0.3.67"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
dependencies = [ dependencies = [
"addr2line", "addr2line",
"cc", "cc",
"cfg-if", "cfg-if",
"libc", "libc",
"miniz_oxide", "miniz_oxide",
"object 0.29.0", "object",
"rustc-demangle", "rustc-demangle",
] ]
@ -1187,13 +1187,11 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.23" version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af" checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
dependencies = [ dependencies = [
"cfg-if",
"crc32fast", "crc32fast",
"libc",
"miniz_oxide", "miniz_oxide",
] ]
@ -1409,12 +1407,20 @@ version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
dependencies = [ dependencies = [
"compiler_builtins",
"fallible-iterator", "fallible-iterator",
"indexmap", "indexmap",
"stable_deref_trait",
]
[[package]]
name = "gimli"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
dependencies = [
"compiler_builtins",
"rustc-std-workspace-alloc", "rustc-std-workspace-alloc",
"rustc-std-workspace-core", "rustc-std-workspace-core",
"stable_deref_trait",
] ]
[[package]] [[package]]
@ -1869,9 +1875,9 @@ checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
[[package]] [[package]]
name = "libz-sys" name = "libz-sys"
version = "1.1.3" version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@ -2098,9 +2104,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.5.3" version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
dependencies = [ dependencies = [
"adler", "adler",
"compiler_builtins", "compiler_builtins",
@ -2200,29 +2206,20 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "object"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
dependencies = [
"compiler_builtins",
"memchr",
"rustc-std-workspace-alloc",
"rustc-std-workspace-core",
]
[[package]] [[package]]
name = "object" name = "object"
version = "0.30.1" version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d864c91689fdc196779b98dba0aceac6118594c2df6ee5d943eb6a8df4d107a" checksum = "8d864c91689fdc196779b98dba0aceac6118594c2df6ee5d943eb6a8df4d107a"
dependencies = [ dependencies = [
"compiler_builtins",
"crc32fast", "crc32fast",
"flate2", "flate2",
"hashbrown 0.13.1", "hashbrown 0.13.1",
"indexmap", "indexmap",
"memchr", "memchr",
"rustc-std-workspace-alloc",
"rustc-std-workspace-core",
] ]
[[package]] [[package]]
@ -3073,7 +3070,7 @@ dependencies = [
"cstr", "cstr",
"libc", "libc",
"measureme", "measureme",
"object 0.30.1", "object",
"rustc-demangle", "rustc-demangle",
"rustc_ast", "rustc_ast",
"rustc_attr", "rustc_attr",
@ -3110,7 +3107,7 @@ dependencies = [
"itertools", "itertools",
"jobserver", "jobserver",
"libc", "libc",
"object 0.30.1", "object",
"pathdiff", "pathdiff",
"regex", "regex",
"rustc_arena", "rustc_arena",
@ -4498,7 +4495,7 @@ dependencies = [
"hermit-abi 0.3.0", "hermit-abi 0.3.0",
"libc", "libc",
"miniz_oxide", "miniz_oxide",
"object 0.29.0", "object",
"panic_abort", "panic_abort",
"panic_unwind", "panic_unwind",
"profiler_builtins", "profiler_builtins",
@ -4766,9 +4763,9 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da8fbf660a019b6bf11ea95762041464aa9099cc293b6a66d77cea5107619671" checksum = "da8fbf660a019b6bf11ea95762041464aa9099cc293b6a66d77cea5107619671"
dependencies = [ dependencies = [
"gimli", "gimli 0.26.2",
"hashbrown 0.12.3", "hashbrown 0.12.3",
"object 0.30.1", "object",
"tracing", "tracing",
] ]

View File

@ -552,6 +552,7 @@ pub enum ArchiveKind {
K_BSD, K_BSD,
K_DARWIN, K_DARWIN,
K_COFF, K_COFF,
K_AIXBIG,
} }
// LLVMRustThinLTOData // LLVMRustThinLTOData

View File

@ -137,6 +137,7 @@ impl FromStr for ArchiveKind {
"bsd" => Ok(ArchiveKind::K_BSD), "bsd" => Ok(ArchiveKind::K_BSD),
"darwin" => Ok(ArchiveKind::K_DARWIN), "darwin" => Ok(ArchiveKind::K_DARWIN),
"coff" => Ok(ArchiveKind::K_COFF), "coff" => Ok(ArchiveKind::K_COFF),
"aix_big" => Ok(ArchiveKind::K_AIXBIG),
_ => Err(()), _ => Err(()),
} }
} }

View File

@ -7,7 +7,7 @@ edition = "2021"
test = false test = false
[dependencies] [dependencies]
ar_archive_writer = "0.1.1" ar_archive_writer = "0.1.3"
bitflags = "1.2.1" bitflags = "1.2.1"
cc = "1.0.69" cc = "1.0.69"
itertools = "0.10.1" itertools = "0.10.1"

View File

@ -233,6 +233,7 @@ impl<'a> ArArchiveBuilder<'a> {
"bsd" => ArchiveKind::Bsd, "bsd" => ArchiveKind::Bsd,
"darwin" => ArchiveKind::Darwin, "darwin" => ArchiveKind::Darwin,
"coff" => ArchiveKind::Coff, "coff" => ArchiveKind::Coff,
"aix_big" => ArchiveKind::AixBig,
kind => { kind => {
self.sess.emit_fatal(UnknownArchiveKind { kind }); self.sess.emit_fatal(UnknownArchiveKind { kind });
} }

View File

@ -39,6 +39,7 @@ enum class LLVMRustArchiveKind {
BSD, BSD,
DARWIN, DARWIN,
COFF, COFF,
AIX_BIG,
}; };
static Archive::Kind fromRust(LLVMRustArchiveKind Kind) { static Archive::Kind fromRust(LLVMRustArchiveKind Kind) {
@ -51,6 +52,8 @@ static Archive::Kind fromRust(LLVMRustArchiveKind Kind) {
return Archive::K_DARWIN; return Archive::K_DARWIN;
case LLVMRustArchiveKind::COFF: case LLVMRustArchiveKind::COFF:
return Archive::K_COFF; return Archive::K_COFF;
case LLVMRustArchiveKind::AIX_BIG:
return Archive::K_AIXBIG;
default: default:
report_fatal_error("Bad ArchiveKind."); report_fatal_error("Bad ArchiveKind.");
} }

@ -1 +1 @@
Subproject commit 07872f28cd8a65c3c7428811548dc85f1f2fb05b Subproject commit 8ad84ca5ad88ade697637387e7cb4d7c3cf4bde8

View File

@ -23,11 +23,11 @@ hashbrown = { version = "0.12", default-features = false, features = ['rustc-dep
std_detect = { path = "../stdarch/crates/std_detect", default-features = false, features = ['rustc-dep-of-std'] } std_detect = { path = "../stdarch/crates/std_detect", default-features = false, features = ['rustc-dep-of-std'] }
# Dependencies of the `backtrace` crate # Dependencies of the `backtrace` crate
addr2line = { version = "0.17.0", optional = true, default-features = false } addr2line = { version = "0.19.0", optional = true, default-features = false }
rustc-demangle = { version = "0.1.21", features = ['rustc-dep-of-std'] } rustc-demangle = { version = "0.1.21", features = ['rustc-dep-of-std'] }
miniz_oxide = { version = "0.5.0", optional = true, default-features = false } miniz_oxide = { version = "0.6.0", optional = true, default-features = false }
[dependencies.object] [dependencies.object]
version = "0.29.0" version = "0.30.0"
optional = true optional = true
default-features = false default-features = false
features = ['read_core', 'elf', 'macho', 'pe', 'unaligned', 'archive'] features = ['read_core', 'elf', 'macho', 'pe', 'unaligned', 'archive']

View File

@ -1,3 +1,8 @@
// ignore-wasm
// ignore-msvc
// ignore-emscripten
// ignore-uwp
fn main() { fn main() {
let data: &[u8] = &[0; 10]; let data: &[u8] = &[0; 10];
let _: &[i8] = data.into(); let _: &[i8] = data.into();

View File

@ -1,10 +1,11 @@
error[E0277]: the trait bound `&[i8]: From<&[u8]>` is not satisfied error[E0277]: the trait bound `&[i8]: From<&[u8]>` is not satisfied
--> $DIR/issue-71394-no-from-impl.rs:3:25 --> $DIR/issue-71394-no-from-impl.rs:8:25
| |
LL | let _: &[i8] = data.into(); LL | let _: &[i8] = data.into();
| ^^^^ the trait `From<&[u8]>` is not implemented for `&[i8]` | ^^^^ the trait `From<&[u8]>` is not implemented for `&[i8]`
| |
= help: the following other types implement trait `From<T>`: = help: the following other types implement trait `From<T>`:
<&'input [u8] as From<gimli::read::endian_slice::EndianSlice<'input, Endian>>>
<[T; LANES] as From<Simd<T, LANES>>> <[T; LANES] as From<Simd<T, LANES>>>
<[bool; LANES] as From<Mask<T, LANES>>> <[bool; LANES] as From<Mask<T, LANES>>>
= note: required for `&[u8]` to implement `Into<&[i8]>` = note: required for `&[u8]` to implement `Into<&[i8]>`