about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo.net>2016-03-29 12:12:12 -0400
committerMichael Woerister <michaelwoerister@posteo>2016-04-03 00:44:17 -0400
commitc2ede7e185fe32d9b0b8b85bd06fc0741cd14cf3 (patch)
treeffa25d8780333b2374bfa63ca2c3475cd0ce79da /src/test
parent6bd7299964ab11320ba2e86b103d21069c4a4544 (diff)
downloadrust-c2ede7e185fe32d9b0b8b85bd06fc0741cd14cf3.tar.gz
rust-c2ede7e185fe32d9b0b8b85bd06fc0741cd14cf3.zip
Add run-make test for stable symbol-name generation.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/run-make/stable-symbol-names/Makefile18
-rw-r--r--src/test/run-make/stable-symbol-names/stable-symbol-names1.rs22
-rw-r--r--src/test/run-make/stable-symbol-names/stable-symbol-names2.rs20
3 files changed, 60 insertions, 0 deletions
diff --git a/src/test/run-make/stable-symbol-names/Makefile b/src/test/run-make/stable-symbol-names/Makefile
new file mode 100644
index 00000000000..da96d1b1dcf
--- /dev/null
+++ b/src/test/run-make/stable-symbol-names/Makefile
@@ -0,0 +1,18 @@
+-include ../tools.mk
+
+# This test case makes sure that monomorphizations of the same function with the
+# same set of generic arguments will have the same symbol names when
+# instantiated in different crates.
+
+dump-symbols = nm "$(TMPDIR)/lib$(1).rlib" \
+             |  grep "some_test_function" \
+             | sed "s/^[0-9a-f]\{8,16\}/00000000/" \
+             | sort \
+             > "$(TMPDIR)/$(1).nm"
+
+all:
+	$(RUSTC) stable-symbol-names1.rs
+	$(RUSTC) stable-symbol-names2.rs
+	$(call dump-symbols,stable_symbol_names1)
+	$(call dump-symbols,stable_symbol_names2)
+	cmp "$(TMPDIR)/stable_symbol_names1.nm" "$(TMPDIR)/stable_symbol_names2.nm"
diff --git a/src/test/run-make/stable-symbol-names/stable-symbol-names1.rs b/src/test/run-make/stable-symbol-names/stable-symbol-names1.rs
new file mode 100644
index 00000000000..7b2cd857113
--- /dev/null
+++ b/src/test/run-make/stable-symbol-names/stable-symbol-names1.rs
@@ -0,0 +1,22 @@
+// Copyright 2016 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.
+
+#![crate_type="rlib"]
+
+pub fn some_test_function<T>(t: T) -> T {
+  t
+}
+
+pub fn user() {
+  some_test_function(0u32);
+  some_test_function("abc");
+  let x = 2u64;
+  some_test_function(&x);
+}
diff --git a/src/test/run-make/stable-symbol-names/stable-symbol-names2.rs b/src/test/run-make/stable-symbol-names/stable-symbol-names2.rs
new file mode 100644
index 00000000000..ff027d6b46c
--- /dev/null
+++ b/src/test/run-make/stable-symbol-names/stable-symbol-names2.rs
@@ -0,0 +1,20 @@
+// Copyright 2016 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.
+
+#![crate_type="rlib"]
+
+extern crate stable_symbol_names1;
+
+pub fn user() {
+  stable_symbol_names1::some_test_function(1u32);
+  stable_symbol_names1::some_test_function("def");
+  let x = 2u64;
+  stable_symbol_names1::some_test_function(&x);
+}