diff options
author | Jeremy Soller <jeremy@system76.com> | 2021-02-23 09:23:37 -0700 |
---|---|---|
committer | Jeremy Soller <jeremy@system76.com> | 2021-02-23 09:23:37 -0700 |
commit | b2b49fbd7724cf6bede9964e786ecf564d4ab17d (patch) | |
tree | 6929510c1283701e618c8e878661361139ff2fb0 | |
parent | 3a9f308db677f1f30d081e18ee568ae3f0c5ecbd (diff) |
Update kernel and makefiles to enable use of GS segment
m--------- | kernel | 0 | ||||
-rw-r--r-- | mk/kernel.mk | 12 | ||||
-rwxr-xr-x | mk/kernel_ld.sh | 17 |
3 files changed, 23 insertions, 6 deletions
diff --git a/kernel b/kernel -Subproject ba330ffc9abdb07d59ca3c5b386f07e4fb26d87 +Subproject f873fc7e1a20ac9a5630ec031a086903d291779 diff --git a/mk/kernel.mk b/mk/kernel.mk index b6634bd..1adbfa6 100644 --- a/mk/kernel.mk +++ b/mk/kernel.mk @@ -16,21 +16,21 @@ build/libkernel_live.a: kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src cd kernel && \ cargo rustc --lib --target=$(ROOT)/kernel/targets/$(KTARGET).json --release --features live -Z build-std=core,alloc -- -C soft-float -C debuginfo=2 -C lto --emit link=../$@ -build/kernel: kernel/linkers/$(ARCH).ld build/libkernel.a +build/kernel: kernel/linkers/$(ARCH).ld mk/kernel_ld.sh build/libkernel.a export PATH="$(PREFIX_PATH):$$PATH" && \ - $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel.a && \ + $(ROOT)/mk/kernel_ld.sh $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel.a && \ $(OBJCOPY) --only-keep-debug $@ $@.sym && \ $(OBJCOPY) --strip-debug $@ -build/kernel_coreboot: kernel/linkers/$(ARCH).ld build/libkernel_coreboot.a build/live.o +build/kernel_coreboot: kernel/linkers/$(ARCH).ld mk/kernel_ld.sh build/libkernel_coreboot.a build/live.o export PATH="$(PREFIX_PATH):$$PATH" && \ - $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_coreboot.a build/live.o && \ + $(ROOT)/mk/kernel_ld.sh $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_coreboot.a build/live.o && \ $(OBJCOPY) --only-keep-debug $@ $@.sym && \ $(OBJCOPY) --strip-debug $@ -build/kernel_live: kernel/linkers/$(ARCH).ld build/libkernel_live.a build/live.o +build/kernel_live: kernel/linkers/$(ARCH).ld mk/kernel_ld.sh build/libkernel_live.a build/live.o export PATH="$(PREFIX_PATH):$$PATH" && \ - $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_live.a build/live.o && \ + $(ROOT)/mk/kernel_ld.sh $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_live.a build/live.o && \ $(OBJCOPY) --only-keep-debug $@ $@.sym && \ $(OBJCOPY) --strip-debug $@ diff --git a/mk/kernel_ld.sh b/mk/kernel_ld.sh new file mode 100755 index 0000000..0f82b89 --- /dev/null +++ b/mk/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 "$@" |