about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2019-11-10 09:27:20 +0900
committerGitHub <noreply@github.com>2019-11-10 09:27:20 +0900
commit0fec5ab2bbebbff9dab927133ed9b2dc972b6ab2 (patch)
tree6bc533336b11f5961149278f393404500f08a107 /src/test
parent9db3fddfe984418343b2d527288337715a40693c (diff)
parent0da85d62283257516a1dab97f7156a4e0cd96266 (diff)
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/test')
-rw-r--r--src/test/run-make-fulldeps/invalid-library/Makefile4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/test/run-make-fulldeps/invalid-library/Makefile b/src/test/run-make-fulldeps/invalid-library/Makefile
index b6fb122d98b..c75713c3ee5 100644
--- a/src/test/run-make-fulldeps/invalid-library/Makefile
+++ b/src/test/run-make-fulldeps/invalid-library/Makefile
@@ -1,6 +1,6 @@
 -include ../tools.mk
 
 all:
-	touch $(TMPDIR)/rust.metadata.bin
-	$(AR) crus $(TMPDIR)/libfoo-ffffffff-1.0.rlib $(TMPDIR)/rust.metadata.bin
+	touch $(TMPDIR)/lib.rmeta
+	$(AR) crus $(TMPDIR)/libfoo-ffffffff-1.0.rlib $(TMPDIR)/lib.rmeta
 	$(RUSTC) foo.rs 2>&1 | $(CGREP) "can't find crate for"