-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsample.ld
More file actions
104 lines (86 loc) · 2.59 KB
/
sample.ld
File metadata and controls
104 lines (86 loc) · 2.59 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
OUTPUT_ARCH (mips)
/* Starts a segment */
#define BEGIN_SEG(name, addr) \
_##name##SegmentStart = ADDR(.name); \
_##name##SegmentRomStart = __romPos; \
.name addr : AT(__romPos)
/* Ends a segment */
#define END_SEG(name) \
_##name##SegmentEnd = ALIGN(ADDR(.name) + SIZEOF(.name),0x10); \
_##name##SegmentRomEnd = _##name##SegmentEnd - _##name##SegmentStart + _##name##SegmentRomStart; \
__romPos = _##name##SegmentRomEnd; \
. = _##name##SegmentEnd;
/* Starts a noload segment which is intended to contain variables which do not have data yet. */
#define BEGIN_NOLOAD(name) \
_##name##SegmentBssStart = ADDR(.name.noload); \
.name.noload (NOLOAD) :
/* Ends a noload segment */
#define END_NOLOAD(name) \
_##name##SegmentBssEnd = ALIGN(ADDR(.name.noload) + SIZEOF(.name.noload),0x10); \
_##name##SegmentBssSize = _##name##SegmentBssEnd - _##name##SegmentBssStart; \
. = _##name##SegmentBssEnd;
SECTIONS
{
__romPos = 0;
BEGIN_SEG(boot, 0x04000000)
{
BUILD_DIR/asm/rom_header.o(.text); /* ROM Header */
BUILD_DIR/boot.6102.o(.data); /* CIC 6102 bootcode */
}
END_SEG(boot)
BEGIN_SEG(code, 0x80000400) SUBALIGN(16)
{
BUILD_DIR/asm/entry.o(.start);
BUILD_DIR/src/main*.o(.text);
*/libultra_d.a:*.o(.text);
*/libhvqm2.a:*.o(.text);
*/libgcc.a:*.o(.text);
/usr/lib/n64/PR/gspF3DEX2.fifo.o(.text);
/usr/lib/n64/PR/rspboot.o(.text);
/usr/lib/n64/hvqm/hvqm2sp1.o(.text);
/* data */
BUILD_DIR/src/main*.o(.data*);
*/libultra_d.a:*.o(.data*);
*/libhvqm2.a:*.o(.data*);
/usr/lib/n64/PR/rspboot.o(.data*);
/usr/lib/n64/PR/gspF3DEX2.fifo.o(.data*);
/usr/lib/n64/hvqm/hvqm2sp1.o(.data*);
/* rodata */
BUILD_DIR/src/main*.o(.*rodata*);
*/libultra_d.a:*.o(.*rodata*);
*/libhvqm2.a:*.o(.*rodata*);
*/libgcc.a:*.o(.*rodata*);
}
END_SEG(code)
BEGIN_NOLOAD(code)
{
BUILD_DIR/src/main*.o(.*bss*);
*/libultra_d.a:*.o(COMMON);
*/libultra_d.a:*.o(.scommon);
*/libultra_d.a:*.o(.*bss*);
*/libhvqm2.a:*.o(.*bss*);
}
END_NOLOAD(code)
. = 0x80100000;
BEGIN_NOLOAD(hvqmbufs)
{
BUILD_DIR/src/buffers/hvqm_buffers.o(.bss*);
}
END_NOLOAD(hvqmbufs)
. = 0x80700000;
BEGIN_NOLOAD(audiobufs)
{
BUILD_DIR/src/buffers/audio_buffers.o(.bss*);
}
END_NOLOAD(audiobufs)
BEGIN_SEG(hvqmdata, __romPos)
{
BUILD_DIR/assets/dressup2.hvqm.o(.data);
}
END_SEG(hvqmdata)
/* Discard everything not specifically mentioned above. */
/DISCARD/ :
{
*(*);
}
}