From 86ed70defdc02734d3627782dd88f169bb240508 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Sun, 28 Feb 2021 09:53:10 -0700
Subject: [PATCH] Update kernel recipe for GS segment TLS

---
 recipes/kernel/init.rc      |  3 ++-
 recipes/kernel/kernel_ld.sh | 17 +++++++++++++++++
 recipes/kernel/recipe.sh    |  6 ++++--
 3 files changed, 23 insertions(+), 3 deletions(-)
 create mode 100755 recipes/kernel/kernel_ld.sh

diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc
index 25c5ba031..dedda2d0f 100644
--- a/recipes/kernel/init.rc
+++ b/recipes/kernel/init.rc
@@ -6,8 +6,9 @@ randd
 vesad T T G
 stdio display:1
 ps2d us
+ramfs logging
 pcid /etc/pcid/initfs.toml
-redoxfs --uuid $REDOXFS_UUID file
+redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK
 cd file:
 export PATH file:/bin
 run.d /etc/init.d
diff --git a/recipes/kernel/kernel_ld.sh b/recipes/kernel/kernel_ld.sh
new file mode 100755
index 000000000..0f82b89d6
--- /dev/null
+++ b/recipes/kernel/kernel_ld.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+set -ex
+
+LD="$1"
+shift
+
+if "${LD}" -z use-gs-for-tls 2>&1 |
+grep "warning: -z use-gs-for-tls ignored" &> /dev/null
+then
+	echo "Please update your prefix:" >&2
+	echo "  rm -rf prefix" >&2
+	echo "  make prefix" >&2
+	exit 1
+fi
+
+exec "${LD}" -z use-gs-for-tls "$@"
diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh
index b30cc51c6..d2b9dd6b5 100644
--- a/recipes/kernel/recipe.sh
+++ b/recipes/kernel/recipe.sh
@@ -5,15 +5,17 @@ function recipe_build {
     export INITFS_FOLDER="$(realpath ../sysroot)"
     mkdir -pv "$INITFS_FOLDER/etc"
     cp -v "$(realpath ../init.rc)" "$INITFS_FOLDER/etc/init.rc"
-    xargo rustc \
+    cargo rustc \
         --lib \
         --target "${ARCH}-unknown-none" \
         --release \
+		-Z build-std=core,alloc \
         -- \
         -C soft-float \
         -C debuginfo=2 \
+		-C lto \
         --emit link=libkernel.a
-    "${LD}" \
+    ../kernel_ld.sh "${LD}" \
         --gc-sections \
         -z max-page-size=0x1000 \
         -T "linkers/${ARCH}.ld" \
-- 
GitLab