75 lines
2 KiB
Text
75 lines
2 KiB
Text
/* Test linker script for OpenRISC.
|
|
|
|
Copyright (C) 2017-2022 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. */
|