|
|
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.