about summary refs log tree commit diff
path: root/boot/runtime
diff options
context:
space:
mode:
authorMel <mel@rnrd.eu>2026-01-22 03:55:02 +0100
committerMel <mel@rnrd.eu>2026-01-22 03:55:02 +0100
commit7f5d765c929a4dc2deddb7b68a41a3a841940837 (patch)
treec442166ede9f6b4c3a82621a39d754dde8c407ac /boot/runtime
parent30b04e4b2a90981570ae04095aeccd746ccdea6a (diff)
downloadcatskill-7f5d765c929a4dc2deddb7b68a41a3a841940837.tar.zst
catskill-7f5d765c929a4dc2deddb7b68a41a3a841940837.zip
LLVM clang compiler backend
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'boot/runtime')
-rw-r--r--boot/runtime/core.c7
-rw-r--r--boot/runtime/stubs.c31
2 files changed, 36 insertions, 2 deletions
diff --git a/boot/runtime/core.c b/boot/runtime/core.c
index c911666..f6c4ef8 100644
--- a/boot/runtime/core.c
+++ b/boot/runtime/core.c
@@ -4,13 +4,16 @@
  * used during bootstrapping, while the full
  * catskill standard library is not yet available.
  *
- * copyright (c) 2025, mel g. <mel@rnrd.eu>
+ * Copyright (c) 2025-2026, Mel G. <mel@rnrd.eu>
  *
- * spdx-license-identifier: mpl-2.0
+ * SPDX-License-Identifier: MPL-2.0
  */
 
 #pragma once
 
+// enable some posix-only functions, like `fileno`.
+#define _POSIX_C_SOURCE 200809L
+
 // common headers for both your average catskill program.
 // other libc headers can be included with the pragma
 // `| c-header "header.h"`.
diff --git a/boot/runtime/stubs.c b/boot/runtime/stubs.c
new file mode 100644
index 0000000..979020e
--- /dev/null
+++ b/boot/runtime/stubs.c
@@ -0,0 +1,31 @@
+/*
+ * stubs.c
+ * provides symbols for various software float implementations that
+ * our backend compilers really want to have somewhere.
+ * we do not use them anywhere within the transpiled source, so
+ * it's safe to let them be empty.
+ * for real implementations we should use `compiler-rt`.
+ *
+ * Copyright (c) 2026, Mel G. <mel@rnrd.eu>
+ *
+ * SPDX-License-Identifier: MPL-2.0
+ */
+
+void __addtf3(void) {}
+void __subtf3(void) {}
+void __multf3(void) {}
+void __divtf3(void) {}
+void __netf2(void) {}
+void __eqtf2(void) {}
+void __lttf2(void) {}
+void __gttf2(void) {}
+void __letf2(void) {}
+void __getf2(void) {}
+void __floatsitf(void) {}
+void __floatunsitf(void) {}
+void __fixtfsi(void) {}
+void __fixunstfsi(void) {}
+void __extendsftf2(void) {}
+void __extenddftf2(void) {}
+void __trunctfsf2(void) {}
+void __trunctfdf2(void) {}