aboutsummaryrefslogtreecommitdiff
path: root/defs/x86_64-linker.ld
blob: 3d5418783da95e9b56fbbe96e2c491bc7406daf5 (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
SECTIONS
{
    PROVIDE (___KERNEL_START__ = .);
    . = 0x100000;     /* system's start address */

    .text :
    {
        *(".text")
        *(".text.*")
        *(".text$")
    }

    .data :
    {
        *(".data")
        *(".data.*")
        *(".data$")
    }

	.reserved : {
		*(".reserved")
		*(".reserved.*")
	}

	/*
	 * basically the same as BSS, but I want some flexibility and I don't care
	 * for zeroing because it's explicitly overwritten anyways. I KNOW WHAT I'M
	 * DOING! An example is the idt.
	 */
	.reserved_0 (NOLOAD) : {
		*(".reserved_0")
		*(".reserved_0.*")
	}

    .rodata :
    {
        *(".rodata")
        *(".rodata$")
        *(".rodata.*")
    }

    .bss :
    {
        PROVIDE (___BSS_START__ = .);
        *(".bss")
        *(".bss.*")
        PROVIDE (___BSS_END__ = .);
    }

    /* global page table for 64-bit long mode */
    .global_pagetable ALIGN(4096) (NOLOAD) :
    {
        *(".global_pagetable")
    }

    . = ALIGN(4096);
    PROVIDE (___KERNEL_END__ = .);
}