blob: 3c960fa86846eeb9a332865734229cba2eaacfa3 (
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
78
79
80
81
82
83
84
85
|
INCLUDE memory.ld
ENTRY(_start)
/*Pass this symbols via CMake*/
MAGIC = 0x1BADB002;
FLAGS = 0;
CHECKSUM = -(MAGIC + FLAGS);
SECTIONS
{
/DISCARD/ :
{
*(.fini)
*(.comment)
}
/* 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*)
*(.init)
. = ALIGN(CONSTANT(MAXPAGESIZE));
_etext = .;
} > REGION_TEXT
.rodata :
{
_rodata = .;
*(.rodata*)
HIDDEN(__CTOR_LIST__ = .);
*(.ctors)
HIDDEN(__CTOR_END__ = .);
HIDDEN(__DTOR_LIST__ = .);
*(.dtors)
HIDDEN(__DTOR_END__ = .);
_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(.) - 1;
} > REGION_DATA
.kheap ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE))
{
_kheap = ABSOLUTE(.);
. += CONSTANT(MAXPAGESIZE);
_ekheap = ABSOLUTE(.) - 1;
} > REGION_DATA
.eh_frame :
{
_eh_frame = .;
*(.eh_frame)
_e_eh_frame = .;
} > REGION_COMMON
}
|