Files
Gen4_R-Car_Trace32/2_Trunk/demo/coverage/mcdc/riscv/riscv.lds
2025-10-14 09:52:32 +09:00

190 lines
3.8 KiB
Plaintext

#ifndef FLASHSTART
#define FLASH SRAM
#endif
#ifndef RAMSTART
#define RAMSTART 0x20000000
#endif
#ifndef RAMSIZE
#define RAMSIZE 32K
#endif
#ifndef FLASHSIZE
#define FLASHSIZE 128K
#endif
#ifndef STACKSIZE
#define STACKSIZE 0x200
#endif
#ifndef ETRSIZE
#define ETRSIZE 0x0
#endif
#ifndef ETRALIGN
#define ETRALIGN 0x100
#endif
/*
* The entry point is important for debuggers and simulators, the
* hardware has its own notion of the startup address.
*/
ENTRY( _start )
MEMORY
{
#ifdef FLASHSTART
FLASH (rxai!w) : ORIGIN = FLASHSTART, LENGTH = FLASHSIZE
#endif
SRAM (wxa!ri) : ORIGIN = RAMSTART, LENGTH = RAMSIZE
}
SECTIONS
{
.init :
{
KEEP (*(SORT_NONE(.init)))
} > SRAM
.text :
{
*(.text.unlikely .text.unlikely.*)
*(.text.startup .text.startup.*)
*(.text .text.*)
*(.gnu.linkonce.t.*)
} > FLASH
.fini :
{
KEEP (*(SORT_NONE(.fini)))
} > FLASH
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata :
{
*(.rdata)
*(.rodata .rodata.*)
*(.gnu.linkonce.r.*)
} > FLASH
. = ALIGN(4);
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
} > SRAM
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
PROVIDE_HIDDEN (__init_array_end = .);
} > SRAM
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
PROVIDE_HIDDEN (__fini_array_end = .);
} > SRAM
.ctors :
{
/* gcc uses crtbegin.o to find the start of
the constructors, so we make sure it is
first. Because this is a wildcard, it
doesn't matter if the user does not
actually link against crtbegin.o; the
linker won't look for a file to match a
wildcard. The wildcard also means that it
doesn't matter which directory crtbegin.o
is in. */
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin?.o(.ctors))
/* We don't want to include the .ctor section from
the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
} > FLASH
.dtors :
{
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin?.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
} > FLASH
.lalign :
{
. = ALIGN(4);
PROVIDE( _data_lma = . );
} > SRAM
.dalign :
{
. = ALIGN(4);
PROVIDE( _data = . );
} > SRAM
.data :
{
*(.data .data.*)
*(.gnu.linkonce.d.*)
. = ALIGN(8);
PROVIDE( __global_pointer$ = . + 0x800 );
*(.sdata .sdata.*)
*(.gnu.linkonce.s.*)
. = ALIGN(8);
*(.srodata.cst16)
*(.srodata.cst8)
*(.srodata.cst4)
*(.srodata.cst2)
*(.srodata .srodata.*)
} > SRAM
. = ALIGN(4);
PROVIDE( _edata = . );
PROVIDE( edata = . );
PROVIDE( _fbss = . );
PROVIDE( __bss_start = . );
.bss :
{
*(.sbss*)
*(.gnu.linkonce.sb.*)
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
} > SRAM
. = ALIGN(8);
PROVIDE( _end = . );
PROVIDE( end = . );
.stack :
{
. = ALIGN(8);
__stack_start = .;
. += STACKSIZE;
PROVIDE( _sp = . );
} > SRAM
__heap_start = .;
}