-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnova.x
73 lines (62 loc) · 1.94 KB
/
nova.x
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
ENTRY(_start);
SECTIONS
{
/* Set the default size of the stack. */
/* */
/* Because the stack will grow down from this point, and if the heap requests memory */
/* being used by the stack then the runtime will panic, this value also functions as */
/* the memory limit for the guest program execution more generally. */
__memory_top = MEMORY_LIMIT;
. = 0;
.text : ALIGN(4)
{
KEEP(*(.init));
. = ALIGN(4);
KEEP(*(.init.rust));
*(.text .text.*);
}
. = ALIGN(8);
. = .* 2;
.data : ALIGN(4)
{
/* Must be called __global_pointer$ for linker relaxations to work. */
__global_pointer$ = . + 0x800;
*(.srodata .srodata.*);
*(.rodata .rodata.*);
*(.sdata .sdata.* .sdata2 .sdata2.*);
*(.data .data.*);
/* this is used by the global allocator (see:src/lib.rs) */
. = ALIGN(4);
_heap = .;
LONG(_ebss);
}
.bss (NOLOAD) : ALIGN(4)
{
*(.sbss .sbss.* .bss .bss.*);
. = ALIGN(4);
_ebss = .;
_end = .;
}
/* Dynamic relocations are unsupported. This section is only used to detect
relocatable code in the input files and raise an error if relocatable code
is found */
.got (INFO) :
{
KEEP(*(.got .got.*));
}
/DISCARD/ :
{
*(.comment*)
*(.debug*)
}
/* Stack unwinding is not supported, but we will keep these for now */
.eh_frame (INFO) : { KEEP(*(.eh_frame)) }
.eh_frame_hdr (INFO) : { *(.eh_frame_hdr) }
}
ASSERT(. < __memory_top, "Program is too large for the VM memory.");
ASSERT(SIZEOF(.got) == 0, "
.got section detected in the input files. Dynamic relocations are not
supported. If you are linking to C code compiled using the `gcc` crate
then modify your build script to compile the C code _without_ the
-fPIC flag. See the documentation of the `gcc::Config.fpic` method for
details.");