diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2019-11-10 09:27:20 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-10 09:27:20 +0900 |
| commit | 0fec5ab2bbebbff9dab927133ed9b2dc972b6ab2 (patch) | |
| tree | 6bc533336b11f5961149278f393404500f08a107 /src/librustc_codegen_ssa | |
| parent | 9db3fddfe984418343b2d527288337715a40693c (diff) | |
| parent | 0da85d62283257516a1dab97f7156a4e0cd96266 (diff) | |
| download | rust-0fec5ab2bbebbff9dab927133ed9b2dc972b6ab2.tar.gz rust-0fec5ab2bbebbff9dab927133ed9b2dc972b6ab2.zip | |
Rollup merge of #66235 - eddyb:coff-syrup, r=nagisa
rustc_metadata: don't let LLVM confuse rmeta blobs for COFF object files.
This has likely been a silent issue since 1.10 but only caused trouble recently (see https://github.com/rust-lang/rust/issues/65536#issuecomment-552018224), when recent changes to the `rmeta` schema introduced more opportunities for COFF parse errors.
To prevent any undesired interactions with old compilers, I've renamed the file inside `rlib`s from `rust.metadata.bin` to `lib.rmeta` (not strongly attached to it, suggestions welcome).
Fixes #65536.
<hr/>
Before:
```
$ llvm-objdump -all-headers build/*/stage1-std/*/release/deps/libcore-*.rmeta
build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps/libcore-6b9e8b5a59b79a1d.rmeta: file format COFF-<unknown arch>
architecture: unknown
start address: 0x00000000
Sections:
Idx Name Size VMA Type
SYMBOL TABLE:
```
After:
```
$ llvm-objdump -all-headers build/*/stage1-std/*/release/deps/libcore-*.rmeta
llvm-objdump: error: 'build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps/libcore-6b9e8b5a59b79a1d.rmeta':
The file was not recognized as a valid object file
```
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/lib.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/librustc_codegen_ssa/lib.rs b/src/librustc_codegen_ssa/lib.rs index dd75883f97d..81e7ef64e97 100644 --- a/src/librustc_codegen_ssa/lib.rs +++ b/src/librustc_codegen_ssa/lib.rs @@ -59,7 +59,8 @@ pub struct ModuleCodegen<M> { pub kind: ModuleKind, } -pub const METADATA_FILENAME: &str = "rust.metadata.bin"; +// FIXME(eddyb) maybe include the crate name in this? +pub const METADATA_FILENAME: &str = "lib.rmeta"; pub const RLIB_BYTECODE_EXTENSION: &str = "bc.z"; |
