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