aboutsummaryrefslogtreecommitdiff
path: root/tests/i/extern-cc-object/program.cps
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 15:58:49 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 15:58:49 +0000
commit44e3b4e38808072ac9e605ab5a216ae54db8c5e4 (patch)
tree405cf75a3c71125ce7580a8cd8e12352f203a07f /tests/i/extern-cc-object/program.cps
parent567d1c932284bdd53c60937ff6f4ce4a63d104bf (diff)
test(extern): call extern "C" functions from a user C++ object
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/extern-cc-object/program.cps')
-rw-r--r--tests/i/extern-cc-object/program.cps13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/i/extern-cc-object/program.cps b/tests/i/extern-cc-object/program.cps
new file mode 100644
index 0000000..6e09f77
--- /dev/null
+++ b/tests/i/extern-cc-object/program.cps
@@ -0,0 +1,13 @@
+// extern "C" symbols from a C++ object; the C++ names would otherwise be mangled.
+INCLUDE_OBJ "lib.o"
+INCLUDE_OBJ "__libc"
+EXTERN "C" EXTERN_FUNCTION cc_sum() RETURNS C_INT
+EXTERN "C" EXTERN_FUNCTION cc_add(C_INT) RETURNS C_INT
+EXTERN "C" EXTERN_FUNCTION cc_text_length(C_STRING) RETURNS C_INT
+EXTERN "C" EXTERN_PROCEDURE cc_say(C_STRING)
+OUTPUT cc_sum()
+OUTPUT cc_add((C_INT)5)
+OUTPUT cc_add((C_INT)7)
+OUTPUT cc_sum()
+OUTPUT cc_text_length((C_STRING)"abc")
+CALL cc_say((C_STRING)"hi from lib.cc")