diff options
| author | Russell <rpjohnst@gmail.com> | 2014-08-01 22:22:02 -0600 |
|---|---|---|
| committer | Russell <rpjohnst@gmail.com> | 2014-08-05 23:28:50 -0600 |
| commit | f7aadee14ef4c0cf67771664de8d95eac0023de8 (patch) | |
| tree | b5064fb505833bde201fb90e95d20e57785c1117 /src/test/run-make | |
| parent | e6e6ef24ab2f18015ba980dda2ae8f4f8cf5b09b (diff) | |
| download | rust-f7aadee14ef4c0cf67771664de8d95eac0023de8.tar.gz rust-f7aadee14ef4c0cf67771664de8d95eac0023de8.zip | |
Add new tests for extern and foreign fns and name mangling.
Diffstat (limited to 'src/test/run-make')
| -rw-r--r-- | src/test/run-make/extern-fn-mangle/Makefile | 7 | ||||
| -rw-r--r-- | src/test/run-make/extern-fn-mangle/test.c | 8 | ||||
| -rw-r--r-- | src/test/run-make/extern-fn-mangle/test.rs | 25 |
3 files changed, 40 insertions, 0 deletions
diff --git a/src/test/run-make/extern-fn-mangle/Makefile b/src/test/run-make/extern-fn-mangle/Makefile new file mode 100644 index 00000000000..ea6971853fe --- /dev/null +++ b/src/test/run-make/extern-fn-mangle/Makefile @@ -0,0 +1,7 @@ +-include ../tools.mk + +all: + $(CC) -std=c99 test.c -c -o $(TMPDIR)/test.o + $(AR) rcs $(TMPDIR)/libtest.a $(TMPDIR)/test.o + $(RUSTC) test.rs -L $(TMPDIR) + $(call RUN,test) || exit 1 diff --git a/src/test/run-make/extern-fn-mangle/test.c b/src/test/run-make/extern-fn-mangle/test.c new file mode 100644 index 00000000000..8d93917ade0 --- /dev/null +++ b/src/test/run-make/extern-fn-mangle/test.c @@ -0,0 +1,8 @@ +#include <stdint.h> + +uint32_t foo(); +uint32_t bar(); + +uint32_t add() { + return foo() + bar(); +} diff --git a/src/test/run-make/extern-fn-mangle/test.rs b/src/test/run-make/extern-fn-mangle/test.rs new file mode 100644 index 00000000000..35b5a9278a4 --- /dev/null +++ b/src/test/run-make/extern-fn-mangle/test.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 <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. + +#[no_mangle] +pub extern "C" fn foo() -> i32 { 3 } + +#[no_mangle] +pub extern "C" fn bar() -> i32 { 5 } + +#[link(name = "test", kind = "static")] +extern { + fn add() -> i32; +} + +fn main() { + let back = unsafe { add() }; + assert_eq!(8, back); +} |
