| /* Test linker script for OpenRISC. |
| |
| Copyright (C) 2017-2021 Free Software Foundation, Inc. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| |
| MEMORY |
| { |
| /* The exception vectors actually start at 0x100, but if you specify |
| that address here, the "--output-target binary" step will start from |
| address 0 with the contents meant for address 0x100. */ |
| exception_vectors : ORIGIN = 0 , LENGTH = 8K |
| ram : ORIGIN = 8K, LENGTH = 2M - 8K |
| } |
| |
| SECTIONS |
| { |
| .exception_vectors : |
| { |
| KEEP(*(.exception_vectors)) |
| } > exception_vectors |
| |
| .text : |
| { |
| *(.text) |
| *(.text.*) |
| *(.rodata) |
| *(.rodata.*) |
| } > ram |
| |
| .data : |
| { |
| *(.data) |
| *(.data.*) |
| } > ram |
| |
| .bss : |
| { |
| *(.bss) |
| *(.bss.*) |
| |
| /* WARNING about section size alignment: |
| The start-up assembly code can only clear BSS section sizes |
| which are aligned to 4 bytes. However, the size of the BSS |
| section may not be aligned, therefore up to 3 bytes more could |
| be zeroed on start-up. This is normally not an issue, as the |
| start of the next section is usually aligned too, so those extra |
| bytes should be just padding. I did try the following trick to |
| align the BSS section size, to no avail: |
| |
| . = ALIGN(., 4); |
| */ |
| } > ram |
| |
| _bss_begin = ADDR(.bss); |
| _bss_end = _bss_begin + SIZEOF(.bss); |
| |
| .stack ALIGN(16) (NOLOAD): |
| { |
| *(.stack) |
| } > ram |
| } |
| |
| ENTRY(_start) /* Otherwise, --gc-sections would throw everything away. */ |