aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ps2/plugin.ld
blob: 10055338d0f65fff237070eca3559f7abf886232 (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
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
PHDRS
{
	plugin PT_LOAD ;
	shorts PT_LOAD ;
}
SECTIONS {
	/* originally was 0x00100000 but might be 0 */
	.text 0: {
		_ftext = . ;
		*(.text)
		*(.text.*)
		*(.gnu.linkonce.t*)
		KEEP(*(.init))
		KEEP(*(.fini))
		QUAD(0)
	}

	PROVIDE(_etext = .);
	PROVIDE(etext = .);

	/* interp may or may not be needed here */
	.interp : { *(.interp) } : plugin
	.reginfo : { *(.reginfo) } : plugin

	/* Global/static constructors and deconstructors. */
	.ctors ALIGN(16): {
	        ___plugin_ctors = .;
		KEEP(*(SORT(.ctors.*)))
		KEEP(*(.ctors))
		___plugin_ctors_end = .;
	}
	.dtors ALIGN(16): {
		___plugin_dtors = .;
		KEEP(*(SORT(.dtors.*)))
		KEEP(*(.dtors))
		___plugin_dtors_end = .;
	}

	/* Static data.  */
	.rodata ALIGN(128): {
		*(.rodata)
		*(.rodata.*)
		*(.gnu.linkonce.r*)
	}

	.data ALIGN(128): {
		_fdata = . ;
		*(.data)
		*(.data.*)
		*(.gnu.linkonce.d*)
		SORT(CONSTRUCTORS)
	}

	.rdata ALIGN(128): { *(.rdata) }
	.gcc_except_table ALIGN(128): { *(.gcc_except_table) }

	/* _gp = ALIGN(128) + 0x7ff0; */
	. = __plugin_hole_start;
	/* the .got line wasn't originally there */
	.got	: { *(.got.plt) *(.got) } : shorts

	.lit4 ALIGN(128): { *(.lit4) }
	.lit8 ALIGN(128): { *(.lit8) }

	.sdata ALIGN(128): {
		*(.sdata)
		*(.sdata.*)
		*(.gnu.linkonce.s*)
	}

	_edata = .;
	PROVIDE(edata = .);

	/* Uninitialized data.  */
	.sbss ALIGN(128) : {
		_fbss = . ;
		*(.sbss)
		*(.sbss.*)
		*(.gnu.linkonce.sb*)
		*(.scommon)
	}

	.bss ALIGN(128) : {
		*(.bss)
		*(.bss.*)
		*(.gnu.linkonce.b*)
		*(COMMON)
	}
	_end_bss = .;

	_end = . ;
	PROVIDE(end = .);

	/* Symbols needed by crt0.s.  */
	PROVIDE(_heap_size = -1);
	PROVIDE(_stack = -1);
	PROVIDE(_stack_size = 128 * 1024);
}