summary refs log tree commit diff
path: root/tests/codegen-llvm/link_section.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen-llvm/link_section.rs')
-rw-r--r--tests/codegen-llvm/link_section.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/codegen-llvm/link_section.rs b/tests/codegen-llvm/link_section.rs
new file mode 100644
index 00000000000..f62f6948079
--- /dev/null
+++ b/tests/codegen-llvm/link_section.rs
@@ -0,0 +1,35 @@
+//@ ignore-wasm32 custom sections work differently on wasm
+//@ compile-flags: -C no-prepopulate-passes
+
+#![crate_type = "lib"]
+
+// CHECK: @VAR1 = {{(dso_local )?}}constant [4 x i8] c"\01\00\00\00", section ".test_one"
+#[no_mangle]
+#[link_section = ".test_one"]
+#[cfg(target_endian = "little")]
+pub static VAR1: u32 = 1;
+
+#[no_mangle]
+#[link_section = ".test_one"]
+#[cfg(target_endian = "big")]
+pub static VAR1: u32 = 0x01000000;
+
+pub enum E {
+    A(u32),
+    B(f32),
+}
+
+// CHECK: @VAR2 = {{(dso_local )?}}constant {{.*}}, section ".test_two"
+#[no_mangle]
+#[link_section = ".test_two"]
+pub static VAR2: E = E::A(666);
+
+// CHECK: @VAR3 = {{(dso_local )?}}constant {{.*}}, section ".test_three"
+#[no_mangle]
+#[link_section = ".test_three"]
+pub static VAR3: E = E::B(1.);
+
+// CHECK: define {{(dso_local )?}}void @fn1() {{.*}} section ".test_four" {
+#[no_mangle]
+#[link_section = ".test_four"]
+pub fn fn1() {}