From 94d6ea02c510ca3752d9667dac13bfb16ab2ee2c Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sat, 25 May 2024 22:41:32 -0400 Subject: build: Add user linker script This ensures the memory layout is in a proper state Signed-off-by: Ian Moffett --- Makefile.in | 3 ++- conf/user-link.ld | 27 +++++++++++++++++++++++++++ usr.sbin/sbin.mk | 3 ++- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 conf/user-link.ld diff --git a/Makefile.in b/Makefile.in index 37f1e98..d5893c5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -27,7 +27,8 @@ endif override AS = $(CC) override USRDIR=$(shell pwd)/base/usr/ override LIBC = libc.a -override USER_MKFLGS = CC=$(CC) LD=$(LD) LIBC=$(LIBC) USRDIR=$(USRDIR) +override USER_LDSCRIPT = $(shell pwd)/conf/user-link.ld +override USER_MKFLGS = LDSCRIPT=$(USER_LDSCRIPT) CC=$(CC) LD=$(LD) LIBC=$(LIBC) USRDIR=$(USRDIR) ########################## # Architecture specifics diff --git a/conf/user-link.ld b/conf/user-link.ld new file mode 100644 index 0000000..9bbe6ae --- /dev/null +++ b/conf/user-link.ld @@ -0,0 +1,27 @@ +ENTRY(_start) + +SECTIONS +{ + . = 0x10000; + + .text : + { + *(.text) + *(.text.*) + } + + .data : ALIGN(8) + { + *(.data) + *(.data.*) + } + + .bss : ALIGN(8) + { + __bss_start = .; + *(.bss) + *(.bss.*) + __bss_end = .; + } +} + diff --git a/usr.sbin/sbin.mk b/usr.sbin/sbin.mk index 763e6ec..a7a7bb9 100644 --- a/usr.sbin/sbin.mk +++ b/usr.sbin/sbin.mk @@ -1,4 +1,5 @@ CC = LIBDIR = USRDIR = -INTERNAL_CFLAGS = -znoexecstack -nostdlib -I$(USRDIR)/include/ $(USRDIR)/lib/libc.a +LDSCRIPT = +INTERNAL_CFLAGS = -T$(LDSCRIPT) -znoexecstack -nostdlib -I$(USRDIR)/include/ $(USRDIR)/lib/libc.a -- cgit v1.2.3