diff --git a/src/test/compile-fail/linkage4.rs b/src/test/compile-fail/linkage4.rs new file mode 100644 index 0000000000000..8f68f3e553cd7 --- /dev/null +++ b/src/test/compile-fail/linkage4.rs @@ -0,0 +1,15 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[linkage = "external"] +static foo: int = 0; +//~^ ERROR: the `linkage` attribute is experimental and not portable + +fn main() {} diff --git a/src/test/run-make/linkage-attr-on-static/Makefile b/src/test/run-make/linkage-attr-on-static/Makefile new file mode 100644 index 0000000000000..6bcde96335cff --- /dev/null +++ b/src/test/run-make/linkage-attr-on-static/Makefile @@ -0,0 +1,8 @@ +-include ../tools.mk + +all: + $(CC) foo.c -c -o $(TMPDIR)/foo.o + $(AR) rcs $(TMPDIR)/libfoo.a $(TMPDIR)/foo.o + $(RUSTC) bar.rs -lfoo -L $(TMPDIR) + $(call RUN,bar) || exit 1 + diff --git a/src/test/run-make/linkage-attr-on-static/bar.rs b/src/test/run-make/linkage-attr-on-static/bar.rs new file mode 100644 index 0000000000000..6125421bdeb6c --- /dev/null +++ b/src/test/run-make/linkage-attr-on-static/bar.rs @@ -0,0 +1,25 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(linkage)] + +#[no_mangle] +#[linkage = "external"] +static BAZ: i32 = 21; + +extern { + fn what() -> i32; +} + +fn main() { + unsafe { + assert_eq!(what(), BAZ); + } +} diff --git a/src/test/run-make/linkage-attr-on-static/foo.c b/src/test/run-make/linkage-attr-on-static/foo.c new file mode 100644 index 0000000000000..78a6934f57f76 --- /dev/null +++ b/src/test/run-make/linkage-attr-on-static/foo.c @@ -0,0 +1,7 @@ +#include + +extern int32_t BAZ; + +int32_t what() { + return BAZ; +}