|
|
1.1 root 1: /* m88kdgux.ld - COFF linker directives for G++ on an AViiON
2:
3: This file is part of GNU CC.
4:
5: GNU CC is free software; you can redistribute it and/or modify
6: it under the terms of the GNU General Public License as published by
7: the Free Software Foundation; either version 2, or (at your option)
8: any later version.
9:
10: GNU CC is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public License
16: along with GNU CC; see the file COPYING. If not, write to
17: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18:
19: On The AViiON we start the output .text section somewhere after the
20: first 64kb (0x10000) of logical address space so that the first
21: 64kb can be mapped out, thus catching references through null
22: pointers. We actually start at 0x10200 (for efficiency). Ideally,
23: we want the page offset of a given word of the .text (output)
24: section to be the same as it's page offset in the actual (output)
25: linked core file so that paging of the .text section is efficient.
26: In order to do this we allow for up to 0x200 bytes of header stuff
27: in the output (linked) object file.
28:
29: For .data, the OCS says that regions with different "protections"
30: (i.e. read/write, read-only) should not share any 4 megabyte chunk
31: of the logical address space, so we start the .data segment at the
32: first (lowest) 4 MB boundary past the end of the .text segment.
33:
34: For some reason, you can't start right at the 4 MB boundary. You
35: have to start at some distance past that. The distance must be
36: equal to the distance from the start of the last 64 KB segment in
37: the (output) .text segment to the actual end of the (output) .text
38: segment. */
39:
40: SECTIONS {
41: .text 0x10200 BLOCK(0x200) :
42: { *(.init) *(.initp) *(.finip) *(.text) *(.tdesc) }
43:
44: GROUP BIND (((((ADDR(.text) + SIZEOF(.text) - 1) / 0x400000) + 1) * 0x400000) + ((ADDR(.text) + SIZEOF (.text)) % 0x10000)) :
45: { .data : { *(.data) *(.ctors) *(.dtors) }
46: .bss : {} }
47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.