Reorganize the kernel binary to support loading a non-stripped kernel.

This commit is contained in:
Ali Mashtizadeh 2023-09-22 21:37:13 -04:00
parent 3b0d7ca64c
commit 2695dcf2b0

View File

@ -10,6 +10,30 @@ SECTIONS
PROVIDE (__executable_start = SEGMENT_START("text-segment", PROVIDE (__executable_start = SEGMENT_START("text-segment",
0xFFFF800000400000)); 0xFFFF800000400000));
. = SEGMENT_START("text-segment", 0xFFFF800000400000) + SIZEOF_HEADERS; . = SEGMENT_START("text-segment", 0xFFFF800000400000) + SIZEOF_HEADERS;
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
*(.text.exit .text.exit.*)
*(.text.startup .text.startup.*)
*(.text.hot .text.hot.*)
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
}
.plt : { *(.plt) *(.iplt) }
.init :
{
KEEP (*(.init))
}
.fini :
{
KEEP (*(.fini))
}
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
.interp : { *(.interp) } .interp : { *(.interp) }
.note.gnu.build-id : { *(.note.gnu.build-id) } .note.gnu.build-id : { *(.note.gnu.build-id) }
.hash : { *(.hash) } .hash : { *(.hash) }
@ -42,30 +66,6 @@ SECTIONS
*(.rela.iplt) *(.rela.iplt)
PROVIDE_HIDDEN (__rela_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_end = .);
} }
.init :
{
KEEP (*(.init))
}
.plt : { *(.plt) *(.iplt) }
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
*(.text.exit .text.exit.*)
*(.text.startup .text.startup.*)
*(.text.hot .text.hot.*)
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
}
.fini :
{
KEEP (*(.fini))
}
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
.eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame_hdr : { *(.eh_frame_hdr) }
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table