xref: /DragonOS/kernel/src/arch/x86_64/link.lds (revision a8753f8fffb992e4d3bbd21eda431081b395af6b)
1
2OUTPUT_FORMAT("elf64-x86-64","elf64-x86-64","elf64-x86-64")
3OUTPUT_ARCH(i386:x86-64)
4ENTRY(_start)
5
6SECTIONS
7{
8	KERNEL_VMA = 0xffff800000000000;
9	//KERNEL_VMA = 0;
10	. = 0;
11	. = 0x100000;
12	_default_kernel_load_base = .;
13	.boot.text :
14	{
15		KEEP(*(.multiboot_header))
16		KEEP(*(.multiboot2_header))
17		*(.bootstrap)
18		*(.bootstrap.code64)
19		*(.bootstrap.data)
20		. = ALIGN(4096);
21	}
22
23	. = 0x1000000;
24	. += KERNEL_VMA;
25	. = ALIGN(32768);
26	text_start_pa = .;
27	.text (text_start_pa): AT(text_start_pa - KERNEL_VMA)
28	{
29		_text = .;
30
31		/* any files' .text */
32		*(.text)
33
34		/* any files' .text.*, for example: rust .text._ZN* */
35		*(.text.*)
36
37		_etext = .;
38	}
39	. = ALIGN(32768);
40	data_start_pa = .;
41	.data (data_start_pa): AT(data_start_pa - KERNEL_VMA)
42	{
43		_data = .;
44		*(.data)
45		*(.data.*)
46
47		_edata = .;
48	}
49
50	. = ALIGN(32768);
51
52	rodata_start_pa = .;
53	.rodata (rodata_start_pa): AT(rodata_start_pa - KERNEL_VMA)
54	{
55		_rodata = .;
56		*(.rodata)
57		*(.rodata.*)
58		_erodata = .;
59	}
60
61	. = ALIGN(32768);
62
63	init_proc_union_start_pa = .;
64	.data.init_proc_union (init_proc_union_start_pa): AT(init_proc_union_start_pa - KERNEL_VMA)
65	 { *(.data.init_proc_union) }
66
67	. = ALIGN(32768);
68	 bss_start_pa = .;
69	.bss (bss_start_pa): AT(bss_start_pa - KERNEL_VMA)
70	{
71		_bss = .;
72		*(.bss)
73		*(.bss.*)
74		_ebss = .;
75	}
76
77	eh_frame = .;
78	.eh_frame (eh_frame): AT(eh_frame - KERNEL_VMA)
79	{
80		__eh_frame_hdr_start = .;
81		*(.eh_frame_hdr)
82		__eh_frame_hdr_end = .;
83		__eh_frame_start = .;
84		*(.eh_frame)
85		*(.rela.eh_frame)
86		__eh_frame_end = .;
87	}
88
89	_end = .;
90
91	/DISCARD/ : {
92		/* *(.eh_frame) */
93
94	}
95}
96