aboutsummaryrefslogtreecommitdiff
path: root/testcases/kernel/kvm/linker/x86_64.lds
blob: 9e62aa5add107e20a6660d41ed51c34369cfcf94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
OUTPUT_FORMAT(elf64-x86-64)

PHDRS
{
	headers PT_PHDR PHDRS ;
	text PT_LOAD FILEHDR PHDRS ;
	data PT_LOAD ;
	bss PT_LOAD ;
}

SECTIONS
{
	/DISCARD/ :
	{
		  *(.note.gnu.* .comment)
	}

	. = 0x1000;
	.init.boot :
	{
		*(.init.protected_mode)
		*(.init.gdt32)
		*(.init.memlayout)
	} :text

	.text :
	{
		*(.rodata .rodata.*)
		*(.text.unlikely .text.unlikely.*)
		*(.text.startup .text.startup.*)
		*(.text .text.*)
		*(.gnu.linkonce.t.*)
	}

	.init :
	{
		KEEP (*(SORT_NONE(.init)))
	}

	.data :
	{
		*(.data.strings)
		*(.data)
	} :data

	.preinit_array :
	{
		PROVIDE_HIDDEN (__preinit_array_start = .);
		KEEP (*(.preinit_array))
		PROVIDE_HIDDEN (__preinit_array_end = .);
	}

	.init_array :
	{
		PROVIDE_HIDDEN (__init_array_start = .);
		KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
		KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
		PROVIDE_HIDDEN (__init_array_end = .);
	}

	.bss.pgtables : ALIGN(4096)
	{
		*(.bss.pgtables)
	} :bss

	.bss : ALIGN(4096)
	{
		*(.bss.stack)
		*(.bss.tss)
		*(.bss)

		. = ALIGN(4096);
		kvm_heap_begin = .;
	}
}