about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGary Guo <gary@garyguo.net>2022-02-09 00:02:51 +0000
committerGary Guo <gary@garyguo.net>2022-04-18 20:50:56 +0100
commit419e3ba97bea3444a0de987fde85efb37385dba4 (patch)
treea928fdd743426adafac6f8f28953c7cdfeb7b520
parentfbc45b650a9c517ca87b0af8f108efbf50689299 (diff)
downloadrust-419e3ba97bea3444a0de987fde85efb37385dba4.tar.gz
rust-419e3ba97bea3444a0de987fde85efb37385dba4.zip
Add a test for issue 47384
-rw-r--r--src/test/run-make/issue-47384/Makefile12
-rw-r--r--src/test/run-make/issue-47384/lib.rs12
-rw-r--r--src/test/run-make/issue-47384/linker.ld7
-rw-r--r--src/test/run-make/issue-47384/main.rs1
4 files changed, 32 insertions, 0 deletions
diff --git a/src/test/run-make/issue-47384/Makefile b/src/test/run-make/issue-47384/Makefile
new file mode 100644
index 00000000000..f10365f8c88
--- /dev/null
+++ b/src/test/run-make/issue-47384/Makefile
@@ -0,0 +1,12 @@
+-include ../../run-make-fulldeps/tools.mk
+
+# only-linux
+# ignore-cross-compile
+
+all: main.rs
+	$(RUSTC) --crate-type lib lib.rs
+	$(RUSTC) --crate-type cdylib -Clink-args="-Tlinker.ld" main.rs
+	# Ensure `#[used]` and `KEEP`-ed section is there
+	objdump -s -j".static" $(TMPDIR)/libmain.so
+	# Ensure `#[no_mangle]` symbol is there
+	nm $(TMPDIR)/libmain.so | $(CGREP) bar
diff --git a/src/test/run-make/issue-47384/lib.rs b/src/test/run-make/issue-47384/lib.rs
new file mode 100644
index 00000000000..99508bcdaf3
--- /dev/null
+++ b/src/test/run-make/issue-47384/lib.rs
@@ -0,0 +1,12 @@
+mod foo {
+    #[link_section = ".rodata.STATIC"]
+    #[used]
+    static STATIC: [u32; 10] = [1; 10];
+}
+
+mod bar {
+    #[no_mangle]
+    extern "C" fn bar() -> i32 {
+        0
+    }
+}
diff --git a/src/test/run-make/issue-47384/linker.ld b/src/test/run-make/issue-47384/linker.ld
new file mode 100644
index 00000000000..2e70acab3f4
--- /dev/null
+++ b/src/test/run-make/issue-47384/linker.ld
@@ -0,0 +1,7 @@
+SECTIONS
+{
+    .static : ALIGN(4)
+    {
+        KEEP(*(.rodata.STATIC));
+    }
+}
diff --git a/src/test/run-make/issue-47384/main.rs b/src/test/run-make/issue-47384/main.rs
new file mode 100644
index 00000000000..02572632517
--- /dev/null
+++ b/src/test/run-make/issue-47384/main.rs
@@ -0,0 +1 @@
+extern crate lib;