8ae0b98903
Kaushik Phatak kaushik.phatak@kpitcummins.com * configure.in: Add CR16 support. * configure: Regenerated. * cr16/aclocal.m4: New. * cr16/close.c: New. * cr16/configure: New. * cr16/configure.in: New. * cr16/crt1.S: New. * cr16/crti.S: New. * cr16/crtn.S: New. * cr16/dvz_hndl.c: New. * cr16/_exit.c: New. * cr16/flg_hndl.c: New. * cr16/fstat.c: New. * cr16/_getenv.c: New. * cr16/getpid.c: New. * cr16/iad_hndl.c: New. * cr16/intable.c: New. * cr16/isatty.c: New. * cr16/kill.c: New. * cr16/lseek.c: New. * cr16/Makefile.in: New. * cr16/open.c: New. * cr16/putnum.c: New. * cr16/read.c: New. * cr16/_rename.c: New. * cr16/sbrk.c: New. * cr16/sim.ld: New. * cr16/stat.c: New. * cr16/svc_hndl.c: New. * cr16/time.c: New. * cr16/und_hndl.c: New. * cr16/unlink.c: New. * cr16/write.c: New.
139 lines
2.6 KiB
Plaintext
139 lines
2.6 KiB
Plaintext
/* Example Linker Script for linking NS CR16 elf32 files.*/
|
|
OUTPUT_FORMAT("elf32-cr16")
|
|
OUTPUT_ARCH(cr16)
|
|
|
|
/*
|
|
The libh.a library includes various CR default handlers.
|
|
The libsim.a library includes low-level functions, which
|
|
are used as an interface to communicate with the simulator.
|
|
*/
|
|
GROUP(-lc -lsim -lh -lgcc)
|
|
|
|
/*
|
|
The next line forces the entry point (_start in this script)
|
|
to be entered in the output file as an undefined symbol.
|
|
It is needed in case the entry point is not called explicitly
|
|
(which is the usual case) AND is in an archive.
|
|
*/
|
|
EXTERN(_start)
|
|
ENTRY(_start)
|
|
|
|
/* Define memory regions: Only RAM required for simulator */
|
|
MEMORY
|
|
{
|
|
ram : ORIGIN = 0x2, LENGTH = 10M
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
.init :
|
|
{
|
|
__INIT_START = .;
|
|
KEEP (*(.init))
|
|
__INIT_END = .;
|
|
} > ram
|
|
|
|
.fini :
|
|
{
|
|
__FINI_START = .;
|
|
KEEP (*(.fini))
|
|
__FINI_END = .;
|
|
} > ram
|
|
|
|
.jcr :
|
|
{
|
|
KEEP (*(.jcr))
|
|
} > ram
|
|
|
|
.text :
|
|
{
|
|
__TEXT_START = .;
|
|
*(.text) *(.text.*) *(.gnu.linkonce.t.*)
|
|
__TEXT_END = .;
|
|
} > ram
|
|
|
|
.rdata :
|
|
{
|
|
__RDATA_START = .;
|
|
*(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) *(.rodata*)
|
|
__RDATA_END = .;
|
|
} > ram
|
|
|
|
.ctor ALIGN(4) :
|
|
{
|
|
__CTOR_START = .;
|
|
KEEP (*crtbegin*.o(.ctors))
|
|
KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
|
|
KEEP (*(SORT(.ctors.*)))
|
|
KEEP (*(.ctors))
|
|
__CTOR_END = .;
|
|
} > ram
|
|
|
|
.dtor ALIGN(4) :
|
|
{
|
|
__DTOR_START = .;
|
|
KEEP (*crtbegin*.o(.dtors))
|
|
KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
|
|
KEEP (*(SORT(.dtors.*)))
|
|
KEEP (*(.dtors))
|
|
__DTOR_END = .;
|
|
} > ram
|
|
|
|
.data :
|
|
{
|
|
__DATA_START = .;
|
|
*(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*)
|
|
*(.eh_frame_hdr)
|
|
*(.eh_frame)
|
|
*(.gcc_except_table)
|
|
*(.got.plt) *(.got)
|
|
__DATA_END = .;
|
|
} > ram
|
|
|
|
.got :
|
|
{
|
|
*(.got)
|
|
} > ram
|
|
.got.plt :
|
|
{
|
|
*(.got.plt)
|
|
} > ram
|
|
|
|
.bss (NOLOAD) :
|
|
{
|
|
__BSS_START = .;
|
|
*(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*)
|
|
__BSS_END = .;
|
|
} > ram
|
|
|
|
/*
|
|
You may change the sizes of the following sections to fit the actual
|
|
size your program requires.
|
|
The heap and stack are aligned to the bus width, as a speed optimization
|
|
for accessing data located there.
|
|
*/
|
|
.heap :
|
|
{
|
|
. = ALIGN(4);
|
|
__HEAP_START = .;
|
|
. += 0x2000;
|
|
__HEAP_MAX = .;
|
|
} > ram
|
|
|
|
.stack :
|
|
{
|
|
. = ALIGN(4);
|
|
. += 0x6000;
|
|
__STACK_START = .;
|
|
} > ram
|
|
|
|
.istack :
|
|
{
|
|
. = ALIGN(4);
|
|
. += 0x100;
|
|
__ISTACK_START = .;
|
|
} > ram
|
|
}
|
|
|
|
__DATA_IMAGE_START = LOADADDR(.data);
|