diff options
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | config.def.h | 16 | ||||
-rw-r--r-- | config.mk | 4 | ||||
-rw-r--r-- | sinit.c | 6 |
4 files changed, 26 insertions, 17 deletions
@@ -1,15 +1,24 @@ include config.mk -CC = diet -Os gcc +CC = diet -Os clang +LD = diet clang OBJ = sinit.o BIN = sinit -CFLAGS = -Os -flto -s -fno-asynchronous-unwind-tables -fno-unwind-tables -LDFLAGS = -flto -Os -static -Wl,--gc-sections -Wl,--strip-all -Wl,-z,norelro -fno-asynchronous-unwind-tables -Wl,--build-id=none +CFLAGS = -Oz -flto -fno-asynchronous-unwind-tables -fno-unwind-tables -ffunction-sections -fdata-sections +LDFLAGS = -flto -O2 -static -Wl,--gc-sections -Wl,--strip-all -Wl,-z,norelro -fno-asynchronous-unwind-tables -Wl,--build-id=none all: $(BIN) poweroff reboot +reboot: reboot.o + $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS) + strip -R .comment -R .jcr -R .eh_data -R .note -R .eh_frame $@ + +poweroff: poweroff.o + $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS) + strip -R .comment -R .jcr -R .eh_data -R .note -R .eh_frame $@ + $(BIN): $(OBJ) - $(CC) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS) + $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS) strip -R .comment -R .jcr -R .eh_data -R .note -R .eh_frame $@ $(OBJ): config.h diff --git a/config.def.h b/config.def.h index 9fcbc98..39cae29 100644 --- a/config.def.h +++ b/config.def.h @@ -5,20 +5,20 @@ #define USERNAME "who" #define HOMEDIR "/home/" USERNAME -uid_t uid = 1000; -gid_t gid = 1000; +static uid_t uid = 1000; +static gid_t gid = 1000; /* Enable startup profiling with perf(1) */ // #define PERF #ifdef PERF -static char *const perf[] = { +static const char *const perf[] = { "/usr/bin/perf", "record", "-ag", "--output=/tmp/perf.data", "--", "sleep", "3" }; #endif /* constant groups to set for user session */ -static gid_t const groups[] = { +static const gid_t groups[] = { 5, /* tty */ 10, /* wheel */ 91, /* video */ @@ -27,7 +27,7 @@ static gid_t const groups[] = { int udev_settled(void); -static struct { +static const struct { int (*dep)(); char *argv[6]; } init_procs[] = { @@ -41,7 +41,7 @@ static struct { udev_settled, { "/usr/bin/illum-d", NULL }, }; -static struct { +static const struct { char *source; char *target; char *type; @@ -56,7 +56,7 @@ static struct { { "tmpfs", "/run", "tmpfs", MS_NOSUID|MS_NODEV, "mode=755" }, }; -static char *const user_env[] = { +static const char *const user_env[] = { "HOME=" HOMEDIR, "PWD=" HOMEDIR, "PATH=/usr/bin", @@ -68,7 +68,7 @@ static char *const user_env[] = { NULL }; -static char *const user_procs[][5] = { +static const char *const user_procs[][5] = { { "/usr/bin/xinit", "/usr/bin/dwm", "--", "-quiet", NULL }, }; @@ -5,8 +5,8 @@ VERSION = 1.0 PREFIX = /usr/local MANPREFIX = $(PREFIX)/share/man -CC = cc +CC = clang LD = $(CC) CPPFLAGS = -CFLAGS = -Wextra -Wall -Os +CFLAGS = -Wextra -Wall -Oz LDFLAGS = -s -static @@ -22,7 +22,7 @@ static void sigpoweroff(void); static void sigreap(void); static void sigreboot(void); static void spawn(int (*)(), char *const []); -static void spawn_as(uid_t, gid_t, char *const [], char *const []); +static void spawn_as(uid_t, gid_t, const char *const [], const char *const []); static void mounts(void); static void ifup(const char *iface); @@ -156,7 +156,7 @@ spawn(int (*dep)(), char *const argv[]) } static void -spawn_as(uid_t uid, gid_t gid, char *const env[], char *const argv[]) +spawn_as(uid_t uid, gid_t gid, const char *const env[], const char *const argv[]) { /* printf("spawn_as %d,%d: %s\n", uid, gid, argv[0]); */ switch (fork()) { @@ -168,7 +168,7 @@ spawn_as(uid_t uid, gid_t gid, char *const env[], char *const argv[]) setgid(gid); setgroups(LEN(groups), groups); setuid(uid); - execve(argv[0], argv, env); + execve(argv[0], (char *const *)argv, (char *const *)env); #ifdef SANE write(2, "can't exec\n", 11); _exit(1); |