diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-08-03 17:00:13 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-08-04 16:32:35 +1000 |
| commit | e753dbb431534b4b07b2724d7bbbcef59ecbd4d3 (patch) | |
| tree | 4008d6e4bc3aafa9904d39671e0d8591c3a4f40f /src/test/run-make | |
| parent | 055e25acbe9fd48e0791c6a97db27a19b4f36b45 (diff) | |
| download | rust-e753dbb431534b4b07b2724d7bbbcef59ecbd4d3.tar.gz rust-e753dbb431534b4b07b2724d7bbbcef59ecbd4d3.zip | |
rustc: use Name numbers rather than the Show impl for constants.
Using the Show impl for Names created global symbols with names like `"str\"str\"(1027)"`. This adjusts strings, binaries and vtables to avoid using that impl. Fixes #15799.
Diffstat (limited to 'src/test/run-make')
| -rw-r--r-- | src/test/run-make/symbols-are-reasonable/Makefile | 15 | ||||
| -rw-r--r-- | src/test/run-make/symbols-are-reasonable/lib.rs | 20 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/run-make/symbols-are-reasonable/Makefile b/src/test/run-make/symbols-are-reasonable/Makefile new file mode 100644 index 00000000000..42a72f7ca39 --- /dev/null +++ b/src/test/run-make/symbols-are-reasonable/Makefile @@ -0,0 +1,15 @@ +-include ../tools.mk + +# check that the compile generated symbols for strings, binaries, +# vtables, etc. have semisane names (e.g. `str1234`); it's relatively +# easy to accidentally modify the compiler internals to make them +# become things like `str"str"(1234)`. + +OUT=$(TMPDIR)/lib.s + +all: + $(RUSTC) lib.rs --emit=asm --crate-type=staticlib + # just check for symbol declarations with the names we're expecting. + grep 'str[0-9]\+:' $(OUT) + grep 'binary[0-9]\+:' $(OUT) + grep 'vtable[0-9]\+' $(OUT) diff --git a/src/test/run-make/symbols-are-reasonable/lib.rs b/src/test/run-make/symbols-are-reasonable/lib.rs new file mode 100644 index 00000000000..d16888c88fa --- /dev/null +++ b/src/test/run-make/symbols-are-reasonable/lib.rs @@ -0,0 +1,20 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub static X: &'static str = "foobarbaz"; +pub static Y: &'static [u8] = include_bin!("lib.rs"); + +trait Foo {} +impl Foo for uint {} + +pub fn dummy() { + // force the vtable to be created + let _x = &1u as &Foo; +} |
