summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-21 16:44:27 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-21 16:44:27 -0400
commit93dc96687b9b0dc2ab9db26aa8dfb79aab96d01d (patch)
tree5f9949d767a2581a1415dc712dd4e953d1a7371d
parentfmt, rename some fns (diff)
downloadcomus-93dc96687b9b0dc2ab9db26aa8dfb79aab96d01d.tar.gz
comus-93dc96687b9b0dc2ab9db26aa8dfb79aab96d01d.tar.bz2
comus-93dc96687b9b0dc2ab9db26aa8dfb79aab96d01d.zip
update linker scripts
-rw-r--r--config/kernel.ld15
-rw-r--r--config/user.ld65
2 files changed, 47 insertions, 33 deletions
diff --git a/config/kernel.ld b/config/kernel.ld
index bcacf61..8ac23e8 100644
--- a/config/kernel.ld
+++ b/config/kernel.ld
@@ -1,5 +1,12 @@
ENTRY(_start)
+PHDRS
+{
+ text PT_LOAD;
+ rodata PT_LOAD;
+ data PT_LOAD;
+}
+
SECTIONS
{
. = 1M;
@@ -14,7 +21,7 @@ SECTIONS
*(.text)
*(.text.*)
text_end = .;
- }
+ } : text
. = ALIGN(0x1000);
@@ -23,7 +30,7 @@ SECTIONS
*(.rodata)
*(.rodata.*)
rodata_end = .;
- }
+ } : rodata
. = ALIGN(0x1000);
@@ -32,7 +39,7 @@ SECTIONS
*(.data)
*(.data.*)
data_end = .;
- }
+ } : data
. = ALIGN(0x1000);
@@ -42,7 +49,7 @@ SECTIONS
*(.bss)
*(.bss.*)
bss_end = .;
- }
+ } : data
kernel_end = .;
diff --git a/config/user.ld b/config/user.ld
index 9e31dff..da1f8b5 100644
--- a/config/user.ld
+++ b/config/user.ld
@@ -1,51 +1,58 @@
-/*
-** Simple linker script for user-level programs.
-*/
-
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
ENTRY(_start)
+PHDRS
+{
+ text PT_LOAD;
+ rodata PT_LOAD;
+ data PT_LOAD;
+}
+
SECTIONS
{
- /* user text begins at the second page of the address space */
- . = 0x1000;
+ . = 1024M;
+
+ user_start = .;
.text : {
- KEEP(*(.text .stub .text.* .gnu.linkonce.t.*))
- }
+ text_start = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ text_end = .;
+ } : text
- /* define some standard symbols */
- PROVIDE(etext = .);
- PROVIDE(_etext = .);
+ . = ALIGN(0x1000);
- /* read-only data will go at the end of the text section */
.rodata : {
- KEEP(*(.rodata .rodata.* .gnu.linkonce.r.*))
- }
+ rodata_start = .;
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ rodata_end = .;
+ } : rodata
- /* Align the data segment at the next page boundary */
. = ALIGN(0x1000);
.data : {
- KEEP(*(.data))
- }
+ data_start = .;
+ *(.data)
+ *(.data.*)
+ data_end = .;
+ } : data
- PROVIDE(edata = .);
- PROVIDE(_edata = .);
-
- /* Page-align the BSS segment */
. = ALIGN(0x1000);
- PROVIDE(__bss_start = .);
-
.bss : {
- KEEP(*(.bss))
- }
+ bss_start = .;
+ *(COMMON)
+ *(.bss)
+ *(.bss.*)
+ bss_end = .;
+ } : data
- PROVIDE(_end = .);
+ user_end = .;
/DISCARD/ : {
- *(.stab .stab_info .stabstr .eh_frame .note.GNU-stack .note.gnu.property .comment)
+ *(.eh_frame .note.GNU-stack .note.gnu.property .comment)
}
}