about summary refs log tree commit diff
diff options
context:
space:
mode:
authorleo60228 <iakornfeld@gmail.com>2019-11-21 14:03:31 -0500
committerleo60228 <iakornfeld@gmail.com>2019-11-22 12:27:07 -0500
commitc6bcea965d3efd57b87ef590ad3b593a89253d96 (patch)
tree2ebf5f7ead750f8240485a0ad0fb36afcc5813b5
parentd448ab0cf10a6c822b209f208a87ce200efd0772 (diff)
downloadrust-c6bcea965d3efd57b87ef590ad3b593a89253d96.tar.gz
rust-c6bcea965d3efd57b87ef590ad3b593a89253d96.zip
Test std::env::args in a staticlib on glibc Linux
-rw-r--r--src/test/run-make-fulldeps/glibc-staticlib-args/Makefile12
-rw-r--r--src/test/run-make-fulldeps/glibc-staticlib-args/library.rs4
-rw-r--r--src/test/run-make-fulldeps/glibc-staticlib-args/program.c7
3 files changed, 23 insertions, 0 deletions
diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/Makefile b/src/test/run-make-fulldeps/glibc-staticlib-args/Makefile
new file mode 100644
index 00000000000..ad841ec6101
--- /dev/null
+++ b/src/test/run-make-fulldeps/glibc-staticlib-args/Makefile
@@ -0,0 +1,12 @@
+# only-gnu
+# only-linux
+
+-include ../tools.mk
+
+# This ensures that std::env::args works in a library called from C on glibc Linux.
+
+all:
+	$(RUSTC) --crate-type=staticlib library.rs
+	$(CC) program.c $(call STATICLIB,library) $(call OUT_EXE,program) \
+		$(EXTRACFLAGS) $(EXTRACXXFLAGS)
+	$(call RUN,program)
diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/library.rs b/src/test/run-make-fulldeps/glibc-staticlib-args/library.rs
new file mode 100644
index 00000000000..991981dc096
--- /dev/null
+++ b/src/test/run-make-fulldeps/glibc-staticlib-args/library.rs
@@ -0,0 +1,4 @@
+#[no_mangle]
+pub extern fn args_check() {
+    assert_ne!(std::env::args_os().count(), 0);
+}
diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/program.c b/src/test/run-make-fulldeps/glibc-staticlib-args/program.c
new file mode 100644
index 00000000000..d704c39d5c4
--- /dev/null
+++ b/src/test/run-make-fulldeps/glibc-staticlib-args/program.c
@@ -0,0 +1,7 @@
+// ignore-license
+void args_check();
+
+int main() {
+    args_check();
+    return 0;
+}