From 00ea3c3eaf8885e7186ae111a972c4bff0e7b3b4 Mon Sep 17 00:00:00 2001
From: Bensong Liu <bensl@microsoft.com>
Date: Sat, 24 Apr 2021 06:23:51 +0800
Subject: [PATCH] use PIE mode to prevent LD from producing huge binary

---
 kernel/Makefile       | 4 ++--
 kernel/image_head.asm | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/Makefile b/kernel/Makefile
index a54af11..ade032a 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -9,13 +9,13 @@ ARCH = i386
 endif
 
 assemble: kernel head
-	ld -o kernel.img -Ttext 0x7e00 --oformat binary image_head.o kernel.o -m elf_$(ARCH)
+	ld -o kernel.img -fpie -shared --oformat binary image_head.o kernel.o -m elf_$(ARCH)
 
 head:
 	nasm -f elf$(BITS) -DTARGET_BITS=$(BITS) image_head.asm -o image_head.o
 
 kernel:
-	g++ -ffreestanding -fno-pie -c kernel.cc -o kernel.o -m$(BITS) -std=c++17
+	g++ -ffreestanding -fpie -c kernel.cc -o kernel.o -m$(BITS) -std=c++17
 
 clean:
 	rm -f *.o *.img
diff --git a/kernel/image_head.asm b/kernel/image_head.asm
index 92c3af2..b3a3b04 100644
--- a/kernel/image_head.asm
+++ b/kernel/image_head.asm
@@ -1,3 +1,5 @@
+global _start
+_start:
 [bits TARGET_BITS]
 [extern main]
 call main
-- 
GitLab