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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
# ===========================================================================
# LinkSegment_PS2.lcf 1999-2000 Metrowerks Inc. All rights reserved.
# ===========================================================================
#
# linker command file for PS2
#
# 06/09/2000 kashima, put dummy nop after .text section
# 06/09/2000 kashima, change default entry address
# 02/10/2000 kashima, add ALIGNALL before each section
# 01/15/2000 kashima, support overlay by lcf generator
# 11/03/1999 kashima, for SDK 1.10
# 10/22/1999 kashima, change file extention from txt to lcf
# 10/20/1999 kashima, put all sections into main
# 10/12/1999 kashima, separate each sections
# 09/14/1999 kashima,
#
# ===========================================================================
MEMORY
{
main (RWX) : ORIGIN = 0x100000, LENGTH = 0x0
heap (RW) : ORIGIN = AFTER(main), LENGTH = 0x0
}
#FORCE_ACTIVE
#{
#}
KEEP_SECTION
{
.vutext,
.vudata,
.vubss
}
#REF_INCLUDE
#{
SECTIONS
{
# define for crt0
_heap_size = -1;
_stack = -1;
_stack_size = 0x00100000;
# define for lcf
_align_segment = 0x80;
.main :
{
# text sections
. = ALIGN(0x80);
crt0.s (.text)
. = ALIGN(0x10);
ALIGNALL(0x8);
GROUP(ROOT) (.text)
WRITEW 0x0; # text section patch for EE pipeline
WRITEW 0x0; # text section patch for EE pipeline
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.vutext)
# .reginfo
crt0.s (.reginfo)
# data sections
__data_start = .;
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.data)
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.vudata)
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.rodata)
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.rdata)
# static initializers
. = ALIGN(0x10);
ALIGNALL(0x4);
GROUP(ROOT) (.init)
. = ALIGN(0x10);
ALIGNALL(0x4);
__static_init = .;
GROUP(ROOT) (.ctor)
__static_init_end = .;
# .vtables
. = ALIGN(0x10);
ALIGNALL(0x4);
* (.vtables)
# exception table
. = ALIGN(0x10);
__exception_table_start__ = .;
__exception_table_end__ = .;
# addresses for each overlay module
. = ALIGN(0x10);
_overlay_group_addresses = .;
WRITEW ADDR(.main); #
__data_end = .;
__data_size = __data_end - __data_start;
# the address of gp register
_gp = ALIGN(128) + 0x7FF0;
# literal
. = ALIGN(0x80);
ALIGNALL(0x8);
LITERAL
# small data sections
. = ALIGN(0x80);
ALIGNALL(0x4);
* (.sdata)
. = ALIGN(0x80);
_fbss = .;
ALIGNALL(0x4);
* (.sbss)
ALIGNALL(0x4);
* (.scommon)
ALIGNALL(0x4);
* (SCOMMON)
# bss sections
__bss_start = .;
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.bss)
ALIGNALL(0x8);
GROUP(ROOT) (.common)
ALIGNALL(0x8);
GROUP(ROOT) (COMMON)
. = ALIGN(0x80);
ALIGNALL(0x8);
GROUP(ROOT) (.vubss)
ALIGNALL(0x8);
__bss_end = .;
__bss_size = __bss_end - __bss_start;
. = ALIGN(_align_segment);
} > main
.heap :
{
# to get the address for heap
end = .;
_end = .;
} > heap
}
# ===========================================================================
# end of lcf (auto-generated by pre-linker for PS2)
# ===========================================================================
|