summaryrefslogtreecommitdiff
path: root/cc/cc-test/src
diff options
context:
space:
mode:
Diffstat (limited to 'cc/cc-test/src')
-rw-r--r--cc/cc-test/src/NMakefile14
-rw-r--r--cc/cc-test/src/bar1.c7
-rw-r--r--cc/cc-test/src/bar2.c6
-rw-r--r--cc/cc-test/src/baz.cpp9
-rw-r--r--cc/cc-test/src/expand.c4
-rw-r--r--cc/cc-test/src/foo.c9
-rw-r--r--cc/cc-test/src/i686.S9
-rw-r--r--cc/cc-test/src/i686.asm9
-rw-r--r--cc/cc-test/src/include/foo.h0
-rw-r--r--cc/cc-test/src/lib.rs16
-rw-r--r--cc/cc-test/src/msvc.c7
-rw-r--r--cc/cc-test/src/opt_linkage.c5
-rw-r--r--cc/cc-test/src/windows.c3
-rw-r--r--cc/cc-test/src/x86_64.S9
-rw-r--r--cc/cc-test/src/x86_64.asm8
15 files changed, 115 insertions, 0 deletions
diff --git a/cc/cc-test/src/NMakefile b/cc/cc-test/src/NMakefile
new file mode 100644
index 0000000..03c73df
--- /dev/null
+++ b/cc/cc-test/src/NMakefile
@@ -0,0 +1,14 @@
+all: $(OUT_DIR)/msvc.lib $(OUT_DIR)/msvc.exe
+
+$(OUT_DIR)/msvc.lib: $(OUT_DIR)/msvc.o
+ lib -nologo -out:$(OUT_DIR)/msvc.lib $(OUT_DIR)/msvc.o
+ rc -h
+
+$(OUT_DIR)/msvc.o: src/msvc.c
+ $(CC) -nologo -c -Fo:$@ src/msvc.c -MD
+
+$(OUT_DIR)/msvc.exe: $(OUT_DIR)/msvc2.o
+ $(CC) -nologo -Fo:$@ $(OUT_DIR)/msvc2.o
+
+$(OUT_DIR)/msvc2.o: src/msvc.c
+ $(CC) -nologo -c -Fo:$@ src/msvc.c -DMAIN -MD
diff --git a/cc/cc-test/src/bar1.c b/cc/cc-test/src/bar1.c
new file mode 100644
index 0000000..605be33
--- /dev/null
+++ b/cc/cc-test/src/bar1.c
@@ -0,0 +1,7 @@
+#include <stdint.h>
+#include "foo.h"
+
+int32_t bar1() {
+ return 5;
+}
+
diff --git a/cc/cc-test/src/bar2.c b/cc/cc-test/src/bar2.c
new file mode 100644
index 0000000..9be4291
--- /dev/null
+++ b/cc/cc-test/src/bar2.c
@@ -0,0 +1,6 @@
+#include <stdint.h>
+
+int32_t bar2() {
+ return 6;
+}
+
diff --git a/cc/cc-test/src/baz.cpp b/cc/cc-test/src/baz.cpp
new file mode 100644
index 0000000..2d4b959
--- /dev/null
+++ b/cc/cc-test/src/baz.cpp
@@ -0,0 +1,9 @@
+#include <stdint.h>
+
+extern "C" int32_t
+baz() {
+ int *a = new int(8);
+ int b = *a;
+ delete a;
+ return b;
+}
diff --git a/cc/cc-test/src/expand.c b/cc/cc-test/src/expand.c
new file mode 100644
index 0000000..2b492a2
--- /dev/null
+++ b/cc/cc-test/src/expand.c
@@ -0,0 +1,4 @@
+#define HELLO hello
+#define WORLD world
+
+HELLO WORLD
diff --git a/cc/cc-test/src/foo.c b/cc/cc-test/src/foo.c
new file mode 100644
index 0000000..541e62c
--- /dev/null
+++ b/cc/cc-test/src/foo.c
@@ -0,0 +1,9 @@
+#include <stdint.h>
+
+#ifdef FOO
+#if BAR == 1
+int32_t foo() {
+ return 4;
+}
+#endif
+#endif
diff --git a/cc/cc-test/src/i686.S b/cc/cc-test/src/i686.S
new file mode 100644
index 0000000..3ed9e86
--- /dev/null
+++ b/cc/cc-test/src/i686.S
@@ -0,0 +1,9 @@
+.globl asm
+asm:
+ mov $7, %eax
+ ret
+
+.globl _asm
+_asm:
+ mov $7, %eax
+ ret
diff --git a/cc/cc-test/src/i686.asm b/cc/cc-test/src/i686.asm
new file mode 100644
index 0000000..6bf9676
--- /dev/null
+++ b/cc/cc-test/src/i686.asm
@@ -0,0 +1,9 @@
+.586
+.MODEL FLAT, C
+.CODE
+
+asm PROC
+ MOV EAX, 7
+ RET
+asm ENDP
+END
diff --git a/cc/cc-test/src/include/foo.h b/cc/cc-test/src/include/foo.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cc/cc-test/src/include/foo.h
diff --git a/cc/cc-test/src/lib.rs b/cc/cc-test/src/lib.rs
new file mode 100644
index 0000000..b42ebf7
--- /dev/null
+++ b/cc/cc-test/src/lib.rs
@@ -0,0 +1,16 @@
+extern "C" {
+ pub fn foo() -> i32;
+
+ pub fn bar1() -> i32;
+ pub fn bar2() -> i32;
+
+ pub fn asm() -> i32;
+
+ pub fn baz() -> i32;
+
+ #[cfg(windows)]
+ pub fn windows();
+
+ #[cfg(target_env = "msvc")]
+ pub fn msvc();
+}
diff --git a/cc/cc-test/src/msvc.c b/cc/cc-test/src/msvc.c
new file mode 100644
index 0000000..dbbc494
--- /dev/null
+++ b/cc/cc-test/src/msvc.c
@@ -0,0 +1,7 @@
+#include <windows.h>
+
+void msvc() {}
+
+#ifdef MAIN
+int main() {}
+#endif
diff --git a/cc/cc-test/src/opt_linkage.c b/cc/cc-test/src/opt_linkage.c
new file mode 100644
index 0000000..a74af8c
--- /dev/null
+++ b/cc/cc-test/src/opt_linkage.c
@@ -0,0 +1,5 @@
+#include <stdint.h>
+
+int32_t answer() {
+ return 42;
+}
diff --git a/cc/cc-test/src/windows.c b/cc/cc-test/src/windows.c
new file mode 100644
index 0000000..0896aa0
--- /dev/null
+++ b/cc/cc-test/src/windows.c
@@ -0,0 +1,3 @@
+#include <windows.h>
+
+void windows() {}
diff --git a/cc/cc-test/src/x86_64.S b/cc/cc-test/src/x86_64.S
new file mode 100644
index 0000000..3ed9e86
--- /dev/null
+++ b/cc/cc-test/src/x86_64.S
@@ -0,0 +1,9 @@
+.globl asm
+asm:
+ mov $7, %eax
+ ret
+
+.globl _asm
+_asm:
+ mov $7, %eax
+ ret
diff --git a/cc/cc-test/src/x86_64.asm b/cc/cc-test/src/x86_64.asm
new file mode 100644
index 0000000..1c03101
--- /dev/null
+++ b/cc/cc-test/src/x86_64.asm
@@ -0,0 +1,8 @@
+_TEXT SEGMENT
+
+asm PROC
+ MOV EAX, 7
+ RET
+asm ENDP
+
+END