/* ld script to make i386 Linux kernel
* Written by Martin Mares
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SECTIONS
{
. = PAGE_OFFSET_RAW + 0x100000
_text = ./* Text and read-only data */
.text : {
*(.text)
*(.fixup)
*(.gnu.warning)
} = 0x9090
.text.lock : { *(.text.lock) } /* out-of-line lock text */
.rodata : { *(.rodata) }
.kstrtab : { *(.kstrtab) }
. = ALIGN(16)/* Exception table */
__start___ex_table = .
__ex_table : { *(__ex_table) }
__stop___ex_table = .
__start___ksymtab = ./* Kernel symbol table */
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .
_etext = ./* End of text section */
.data : { /* Data */
*(.data)
CONSTRUCTORS
}
_edata = ./* End of data section */
. = ALIGN(8192)/* init_task */
.data.init_task : { *(.data.init_task) }
. = ALIGN(4096)/* Init code and data */
__init_begin = .
.text.init : { *(.text.init) }
.data.init : { *(.data.init) }
. = ALIGN(4096)
__init_end = .
. = ALIGN(32)
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
. = ALIGN(4096)
.data.page_aligned : { *(.data.idt) }
__bss_start = ./* BSS */
.bss : {
*(.bss)
}
_end = .
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
}
vmlinux.lds.S用于对ld的输出进行组版,这个文件的格式在ld.info手册中有详细的说明。vmlinu x.lds.S的主要目的是对输出文件中段进行排序,并定义相关的符号名,以下是简要注释。 /* ld script to make i386 Linux kernel * Written by Martin M...欢迎分享,转载请注明来源:内存溢出
评论列表(0条)