rustc: Fix wasm64 metadata object files
It looks like LLD will detect object files being either 32 or 64-bit depending on any memory present. LLD will additionally reject 32-bit objects during a 64-bit link. Previously metadata objects did not have any memories in them which led LLD to conclude they were 32-bit objects which broke 64-bit targets for wasm. This commit fixes this by ensuring that for 64-bit targets there's a memory object present to get LLD to detect it's a 64-bit target. Additionally this commit moves away from a hand-crafted wasm encoder to the `wasm-encoder` crate on crates.io as the complexity grows for the generated object file. Closes #121460
This commit is contained in:
parent
2dbd6233cc
commit
646e8e7291
5 changed files with 59 additions and 49 deletions
|
|
@ -92,6 +92,7 @@ const EXCEPTIONS: ExceptionList = &[
|
|||
("ryu", "Apache-2.0 OR BSL-1.0"), // BSL is not acceptble, but we use it under Apache-2.0 // cargo/... (because of serde)
|
||||
("self_cell", "Apache-2.0"), // rustc (fluent translations)
|
||||
("snap", "BSD-3-Clause"), // rustc
|
||||
("wasm-encoder", "Apache-2.0 WITH LLVM-exception"), // rustc
|
||||
("wasmparser", "Apache-2.0 WITH LLVM-exception"), // rustc
|
||||
// tidy-alphabetical-end
|
||||
];
|
||||
|
|
@ -267,6 +268,7 @@ const PERMITTED_RUSTC_DEPENDENCIES: &[&str] = &[
|
|||
"jemalloc-sys",
|
||||
"jobserver",
|
||||
"lazy_static",
|
||||
"leb128",
|
||||
"libc",
|
||||
"libloading",
|
||||
"linux-raw-sys",
|
||||
|
|
@ -380,6 +382,7 @@ const PERMITTED_RUSTC_DEPENDENCIES: &[&str] = &[
|
|||
"valuable",
|
||||
"version_check",
|
||||
"wasi",
|
||||
"wasm-encoder",
|
||||
"wasmparser",
|
||||
"winapi",
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue