|
|
@ -0,0 +1,59 @@ |
|
|
|
/* Simple linker script for the ucore kernel. |
|
|
|
See the GNU ld 'info' manual ("info ld") to learn the syntax. */ |
|
|
|
|
|
|
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") |
|
|
|
OUTPUT_ARCH(i386) |
|
|
|
ENTRY(kern_entry) |
|
|
|
|
|
|
|
SECTIONS { |
|
|
|
/* Load the kernel at this address: "." means the current address */ |
|
|
|
/* the phy addr of ucore (before ucore enable paging mechanism*/ |
|
|
|
. = 0x0100000; |
|
|
|
|
|
|
|
.text : { |
|
|
|
*(.text .stub .text.* .gnu.linkonce.t.*) |
|
|
|
} |
|
|
|
|
|
|
|
PROVIDE(etext = .); /* Define the 'etext' symbol to this value */ |
|
|
|
|
|
|
|
.rodata : { |
|
|
|
*(.rodata .rodata.* .gnu.linkonce.r.*) |
|
|
|
} |
|
|
|
|
|
|
|
/* Include debugging information in kernel memory */ |
|
|
|
.stab : { |
|
|
|
PROVIDE(__STAB_BEGIN__ = .); |
|
|
|
*(.stab); |
|
|
|
PROVIDE(__STAB_END__ = .); |
|
|
|
BYTE(0) /* Force the linker to allocate space |
|
|
|
for this section */ |
|
|
|
} |
|
|
|
|
|
|
|
.stabstr : { |
|
|
|
PROVIDE(__STABSTR_BEGIN__ = .); |
|
|
|
*(.stabstr); |
|
|
|
PROVIDE(__STABSTR_END__ = .); |
|
|
|
BYTE(0) /* Force the linker to allocate space |
|
|
|
for this section */ |
|
|
|
} |
|
|
|
|
|
|
|
/* Adjust the address for the data segment to the next page */ |
|
|
|
. = ALIGN(0x1000); |
|
|
|
|
|
|
|
/* The data segment */ |
|
|
|
.data : { |
|
|
|
*(.data) |
|
|
|
} |
|
|
|
|
|
|
|
PROVIDE(edata = .); |
|
|
|
|
|
|
|
.bss : { |
|
|
|
*(.bss) |
|
|
|
} |
|
|
|
|
|
|
|
PROVIDE(end = .); |
|
|
|
|
|
|
|
/DISCARD/ : { |
|
|
|
*(.eh_frame .note.GNU-stack) |
|
|
|
} |
|
|
|
} |