aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorNicholas <nbnoll@eml.cc>2021-11-20 11:55:55 -0800
committerNicholas <nbnoll@eml.cc>2021-11-20 12:34:01 -0800
commite97c8c469db0aa27985dab2879dc1f14905c7387 (patch)
treef10f7ed68f1ad5212eebb0985ef040c5e96235ba /sys
parenta9bfe650038afea8b751175cac16f6027345e45f (diff)
chore: simplify makefiles
Diffstat (limited to 'sys')
-rw-r--r--sys/linux/src/write.c2
-rw-r--r--sys/rt/boot.c2
-rw-r--r--sys/rt/stack.c6
-rw-r--r--sys/rules.mk12
4 files changed, 15 insertions, 7 deletions
diff --git a/sys/linux/src/write.c b/sys/linux/src/write.c
index 7863673..4e09d82 100644
--- a/sys/linux/src/write.c
+++ b/sys/linux/src/write.c
@@ -4,5 +4,5 @@ int
sys·write(int fd, uintptr len, void *buf, intptr *ret)
{
long err = *ret = syscall(·Write, fd, buf, len);
- return err;
+ return error(err);
}
diff --git a/sys/rt/boot.c b/sys/rt/boot.c
index 76f5599..320a596 100644
--- a/sys/rt/boot.c
+++ b/sys/rt/boot.c
@@ -4,6 +4,7 @@
/* tell linker to go find */
int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv);
+void rt·guardstack(void);
#define NAUX 38
static void
@@ -19,6 +20,7 @@ rt·init(char **env, char *program)
rt·context.sysinfo = aux[AT_SYSINFO];
rt·context.pagesize = aux[AT_PAGESZ];
+ rt·guardstack();
}
int
diff --git a/sys/rt/stack.c b/sys/rt/stack.c
index 5ab7a8a..0785760 100644
--- a/sys/rt/stack.c
+++ b/sys/rt/stack.c
@@ -2,7 +2,8 @@
#include <arch/atomic.h>
/* unprefixed names determined by gcc */
-uintptr __stack_chk_guard;
+uintptr rt·stackguard;
+weakalias(rt·stackguard, __stack_chk_guard);
void
rt·guardstack(void)
@@ -11,7 +12,8 @@ rt·guardstack(void)
}
void
-__stack_chk_fail(void)
+rt·stackfail(void)
{
atomic·crash();
}
+weakalias(rt·stackfail, __stack_chk_fail);
diff --git a/sys/rules.mk b/sys/rules.mk
index 3113915..4bba9aa 100644
--- a/sys/rules.mk
+++ b/sys/rules.mk
@@ -1,9 +1,11 @@
# rules for rt
+# -- rt1 initialization --
RT1 := $(OBJ_DIR)/rt/rt1.a
RTI := $(OBJ_DIR)/rt/rti.o
-# rt2 = user program
+# -- rt2 = user program --
RTN := $(OBJ_DIR)/rt/rtn.o
RT3 := $(OBJ_DIR)/rt/rt3.a
+# -- rt3 finalization --
RUNTIME := $(RT1) $(RTI) $(RTN) $(RT3)
RT1_SRC := \
@@ -12,12 +14,14 @@ RT1_SRC := \
$(SYS_DIR)/rt/boot.c\
$(SYS_DIR)/rt/thunk.c
+RT1_OBJ := $(filter %.o, $(RT1_SRC:.c=.o))
+RT1_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT1_OBJ))
+
RT3_SRC := \
+ $(SYS_DIR)/rt/stack.c\
$(SYS_DIR)/rt/dummy.c\
- $(SYS_DIR)/rt/exit.c\
+ $(SYS_DIR)/rt/exit.c
-RT1_OBJ := $(filter %.o, $(RT1_SRC:.c=.o))
-RT1_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT1_OBJ))
RT3_OBJ := $(filter %.o, $(RT3_SRC:.c=.o))
RT3_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT3_OBJ))