OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [scripttempl/] [mcorepe.sc] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 khays
# Linker script for MCore PE.
2
 
3
if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then
4
  RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
5
fi
6
 
7
# We can't easily and portably get an unquoted $ in a shell
8
# substitution, so we do this instead.
9
# Sorting of the .foo$* sections is required by the definition of
10
# grouped sections in PE.
11
# Sorting of the file names in R_IDATA is required by the
12
# current implementation of dlltool (this could probably be changed to
13
# use grouped sections instead).
14
if test "${RELOCATING}"; then
15
  R_TEXT='*(SORT(.text$*))'
16
  R_DATA='*(SORT(.data$*))'
17
  R_RDATA='*(SORT(.rdata$*))'
18
  R_IDATA='
19
    SORT(*)(.idata$2)
20
    SORT(*)(.idata$3)
21
    /* These zeroes mark the end of the import list.  */
22
    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
23
    SORT(*)(.idata$4)
24
    SORT(*)(.idata$5)
25
    SORT(*)(.idata$6)
26
    SORT(*)(.idata$7)'
27
  R_CRT='*(SORT(.CRT$*))'
28
  R_RSRC='*(SORT(.rsrc$*))'
29
else
30
  R_TEXT=
31
  R_DATA=
32
  R_RDATA=
33
  R_IDATA=
34
  R_CRT=
35
  R_RSRC=
36
fi
37
 
38
if test "$RELOCATING"; then
39
  # Can't use ${RELOCATING+blah "blah" blah} for this,
40
  # because bash 2.x will lose the doublequotes.
41
  cat <
42
OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
43
                           "${LITTLE_OUTPUT_FORMAT}")
44
EOF
45
fi
46
 
47
cat <
48
${LIB_SEARCH_DIRS}
49
 
50
${RELOCATING+ENTRY (_mainCRTStartup)}
51
 
52
SECTIONS
53
{
54
  .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
55
  {
56
    ${RELOCATING+ *(.init)}
57
    *(.text)
58
    ${R_TEXT}
59
    ${RELOCATING+ *(.text.*)}
60
    *(.glue_7t)
61
    *(.glue_7)
62
    ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
63
                        LONG (-1); *(.ctors); *(.ctor); LONG (0); }
64
    ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
65
                        LONG (-1); *(.dtors); *(.dtor);  LONG (0); }
66
    ${RELOCATING+ *(.fini)}
67
    /* ??? Why is .gcc_exc here?  */
68
    ${RELOCATING+ *(.gcc_exc)}
69
    ${RELOCATING+ etext = .;}
70
    *(.gcc_except_table)
71
  }
72
 
73
  /* The Cygwin32 library uses a section to avoid copying certain data
74
     on fork.  This used to be named ".data$nocopy".  The linker used
75
     to include this between __data_start__ and __data_end__, but that
76
     breaks building the cygwin32 dll.  Instead, we name the section
77
     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
78
 
79
  .data ${RELOCATING+BLOCK(__section_alignment__)} :
80
  {
81
    ${RELOCATING+__data_start__ = . ;}
82
    *(.data)
83
    *(.data2)
84
    ${R_DATA}
85
    ${RELOCATING+__data_end__ = . ;}
86
    ${RELOCATING+*(.data_cygwin_nocopy)}
87
  }
88
 
89
  .bss ${RELOCATING+BLOCK(__section_alignment__)} :
90
  {
91
    ${RELOCATING+__bss_start__ = . ;}
92
    *(.bss)
93
    *(COMMON)
94
    ${RELOCATING+__bss_end__ = . ;}
95
  }
96
 
97
  .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
98
  {
99
    *(.rdata)
100
    ${R_RDATA}
101
    *(.eh_frame)
102
  }
103
 
104
  .edata ${RELOCATING+BLOCK(__section_alignment__)} :
105
  {
106
    *(.edata)
107
  }
108
 
109
  /DISCARD/ :
110
  {
111
    *(.debug\$S)
112
    *(.debug\$T)
113
    *(.debug\$F)
114
    *(.drectve)
115
  }
116
 
117
  .idata ${RELOCATING+BLOCK(__section_alignment__)} :
118
  {
119
    /* This cannot currently be handled with grouped sections.
120
        See pe.em:sort_sections.  */
121
    ${R_IDATA}
122
  }
123
  .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
124
  {
125
    ${R_CRT}
126
  }
127
 
128
  .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
129
  {
130
    /* end is deprecated, don't use it */
131
    ${RELOCATING+ end = .;}
132
    ${RELOCATING+ _end = .;}
133
    ${RELOCATING+ __end__ = .;}
134
  }
135
 
136
  .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
137
  {
138
    *(.reloc)
139
  }
140
 
141
  .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
142
  {
143
    *(.rsrc)
144
    ${R_RSRC}
145
  }
146
 
147
  .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
148
  {
149
    [ .stab ]
150
  }
151
 
152
  .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
153
  {
154
    [ .stabstr ]
155
  }
156
 
157
  .stack 0x80000 :
158
  {
159
    _stack = .;
160
    *(.stack)
161
  }
162
}
163
EOF

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.