Skip to content

Commit 34256d1

Browse files
committed
Use object crate's wasm feature
1 parent 513258b commit 34256d1

File tree

3 files changed

+14
-32
lines changed

3 files changed

+14
-32
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2608,6 +2608,7 @@ dependencies = [
26082608
"rustc-std-workspace-alloc",
26092609
"rustc-std-workspace-core",
26102610
"ruzstd",
2611+
"wasmparser",
26112612
]
26122613

26132614
[[package]]
@@ -6035,6 +6036,16 @@ version = "0.2.87"
60356036
source = "registry+https://github.com/rust-lang/crates.io-index"
60366037
checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
60376038

6039+
[[package]]
6040+
name = "wasmparser"
6041+
version = "0.118.1"
6042+
source = "registry+https://github.com/rust-lang/crates.io-index"
6043+
checksum = "95ee9723b928e735d53000dec9eae7b07a60e490c85ab54abb66659fc61bfcd9"
6044+
dependencies = [
6045+
"indexmap",
6046+
"semver",
6047+
]
6048+
60386049
[[package]]
60396050
name = "web-sys"
60406051
version = "0.3.61"

compiler/rustc_codegen_ssa/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ libc = "0.2.50"
4848
[dependencies.object]
4949
version = "0.32.1"
5050
default-features = false
51-
features = ["read_core", "elf", "macho", "pe", "xcoff", "unaligned", "archive", "write"]
51+
features = ["read_core", "elf", "macho", "pe", "xcoff", "unaligned", "archive", "write", "wasm"]
5252

5353
[target.'cfg(windows)'.dependencies.windows]
5454
version = "0.48.0"

compiler/rustc_codegen_ssa/src/back/metadata.rs

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use rustc_metadata::creader::MetadataLoader;
1616
use rustc_metadata::fs::METADATA_FILENAME;
1717
use rustc_metadata::EncodedMetadata;
1818
use rustc_serialize::leb128;
19-
use rustc_serialize::{opaque::MemDecoder, Decoder};
2019
use rustc_session::Session;
2120
use rustc_span::sym;
2221
use rustc_target::abi::Endian;
@@ -64,8 +63,8 @@ impl MetadataLoader for DefaultMetadataLoader {
6463
.map_err(|e| format!("failed to parse rlib '{}': {}", path.display(), e))?;
6564
if target.is_like_aix {
6665
return get_metadata_xcoff(path, data);
67-
} else if target.is_like_wasm {
68-
return get_metadata_wasm(data, ".rmeta");
66+
// } else if target.is_like_wasm {
67+
// return get_metadata_wasm(data, ".rmeta");
6968
} else {
7069
return search_for_section(path, data, ".rmeta");
7170
}
@@ -675,31 +674,3 @@ pub fn create_metadata_file_for_wasm(data: &[u8], section_name: &[u8]) -> Vec<u8
675674
append_custom_section(section_name, data);
676675
bytes
677676
}
678-
679-
// NB: see documentation on `create_metadata_file_for_wasm` above for
680-
// particulars on the wasm format.
681-
fn get_metadata_wasm<'a>(data: &'a [u8], expected_section_name: &str) -> Result<&'a [u8], String> {
682-
let data = data
683-
.strip_prefix(b"\0asm\x01\0\0\0")
684-
.ok_or_else(|| format!("metadata has an invalid wasm header"))?;
685-
686-
let mut decoder = MemDecoder::new(data, 0);
687-
let mut next_custom_section = |expected_section_name: &str| {
688-
if decoder.read_u8() != 0 {
689-
return Err(format!("metadata did not start with a custom section"));
690-
}
691-
let section_len = leb128::read_usize_leb128(&mut decoder);
692-
693-
let section_start = decoder.position();
694-
let mut section = MemDecoder::new(decoder.read_raw_bytes(section_len), 0);
695-
let name_len = leb128::read_usize_leb128(&mut section);
696-
let section_name = section.read_raw_bytes(name_len);
697-
if section_name != expected_section_name.as_bytes() {
698-
return Err(format!("unexpected section name in metadata object"));
699-
}
700-
Ok(&data[section_start + section.position()..][..section.remaining()])
701-
};
702-
703-
next_custom_section("linking")?;
704-
next_custom_section(expected_section_name)
705-
}

0 commit comments

Comments
 (0)