blob: 9a0561b9620a6133ef1d00354fc8bee86a586252 (
plain) (
blame)
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
76
77
|
INCLUDE memory.ld
ENTRY(_start)
/*Pass this symbols via CMake*/
MAGIC = 0x1BADB002;
FLAGS = 0;
CHECKSUM = -(MAGIC + FLAGS);
SECTIONS
{
/* It's a raw solution. */
/* Automatic generation of filling .multiboot section needs. */
.multiboot ALIGN(START_ADDR, CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE))
{
LONG(MAGIC);
LONG(FLAGS);
LONG(CHECKSUM)
} > REGION_MULTIBOOT
.text ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE))
{
_text = .;
*(.text*)
_etext = .;
} > REGION_TEXT
.rodata ALIGN(CONSTANT(MAXPAGESIZE)): ALIGN(CONSTANT(MAXPAGESIZE))
{
_rodata = .;
*(.rodata*)
_erodata = .;
} > REGION_RODATA
.data :
{
_data = .;
*(.data)
_edata = .;
} > REGION_DATA
.bss :
{
_bss = .;
*(.bss)
*(COMMON)
_ebss = .;
} > REGION_BSS
.stack ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE))
{
_stack = ABSOLUTE(.);
. += 4 * CONSTANT(MAXPAGESIZE);
_estack = ABSOLUTE(.);
} > REGION_DATA
.kheap ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE))
{
_startKheap = ABSOLUTE(.);
. += CONSTANT(MAXPAGESIZE);
_endKheap = ABSOLUTE(.);
} > REGION_DATA
.eh_frame :
{
_eh_frame = .;
*(.eh_frame)
_e_eh_frame = .;
} > REGION_COMMON
.ctors :
{
SORT_BY_NAME(CONSTRUCTORS)
} > REGION_COMMON
}
|