STARTUP(cygmon-crt0.o)
|
STARTUP(cygmon-crt0.o)
|
ENTRY(__start)
|
ENTRY(__start)
|
GROUP(-lcygmon -lc -lcygmon -lgcc)
|
GROUP(-lcygmon -lc -lcygmon -lgcc)
|
SEARCH_DIR(.)
|
SEARCH_DIR(.)
|
__DYNAMIC = 0;
|
__DYNAMIC = 0;
|
|
|
/*
|
/*
|
* Allocate the stack to be at the top of memory, since the stack
|
* Allocate the stack to be at the top of memory, since the stack
|
* grows down
|
* grows down
|
*/
|
*/
|
PROVIDE (__stack = 0x500000);
|
PROVIDE (__stack = 0x500000);
|
|
|
/*
|
/*
|
* Initalize some symbols to be zero so we can reference them in the
|
* Initalize some symbols to be zero so we can reference them in the
|
* crt0 without core dumping. These functions are all optional, but
|
* crt0 without core dumping. These functions are all optional, but
|
* we do this so we can have our crt0 always use them if they exist.
|
* we do this so we can have our crt0 always use them if they exist.
|
* This is so BSPs work better when using the crt0 installed with gcc.
|
* This is so BSPs work better when using the crt0 installed with gcc.
|
* We have to initalize them twice, so we multiple object file
|
* We have to initalize them twice, so we multiple object file
|
* formats, as some prepend an underscore.
|
* formats, as some prepend an underscore.
|
*/
|
*/
|
PROVIDE (hardware_init_hook = 0);
|
PROVIDE (hardware_init_hook = 0);
|
PROVIDE (software_init_hook = 0);
|
PROVIDE (software_init_hook = 0);
|
PROVIDE (__mem_start = 0x100000);
|
PROVIDE (__mem_start = 0x100000);
|
PROVIDE (___mem_start = 0x100000);
|
PROVIDE (___mem_start = 0x100000);
|
SECTIONS
|
SECTIONS
|
{
|
{
|
. = 0x100000;
|
. = 0x100000;
|
.text : {
|
.text : {
|
_ftext = . ;
|
_ftext = . ;
|
*(.init)
|
*(.init)
|
eprol = .;
|
eprol = .;
|
*(.text)
|
*(.text)
|
PROVIDE (__runtime_reloc_start = .);
|
PROVIDE (__runtime_reloc_start = .);
|
*(.rel.sdata)
|
*(.rel.sdata)
|
PROVIDE (__runtime_reloc_stop = .);
|
PROVIDE (__runtime_reloc_stop = .);
|
*(.fini)
|
*(.fini)
|
. = ALIGN(4);
|
. = ALIGN(4);
|
__CTOR_LIST__ = .;
|
__CTOR_LIST__ = .;
|
CONSTRUCTORS
|
CONSTRUCTORS
|
LONG(-1)
|
LONG(-1)
|
*(.ctors)
|
*(.ctors)
|
LONG(0)
|
LONG(0)
|
__CTOR_END__ = .;
|
__CTOR_END__ = .;
|
__DTOR_LIST__ = .;
|
__DTOR_LIST__ = .;
|
LONG(-1)
|
LONG(-1)
|
*(.dtors)
|
*(.dtors)
|
LONG(0)
|
LONG(0)
|
__DTOR_END__ = .;
|
__DTOR_END__ = .;
|
PROVIDE(_etext = .);
|
PROVIDE(_etext = .);
|
PROVIDE(__etext = .);
|
PROVIDE(__etext = .);
|
}
|
}
|
. = .;
|
. = .;
|
.rdata : {
|
.rdata : {
|
*(.rdata)
|
*(.rdata)
|
}
|
}
|
.rodata : {
|
.rodata : {
|
*(.rodata)
|
*(.rodata)
|
*(.rodata.*)
|
*(.rodata.*)
|
}
|
}
|
.eh_frame :
|
.eh_frame :
|
{
|
{
|
PROVIDE (__EH_FRAME_BEGIN__ = .);
|
PROVIDE (__EH_FRAME_BEGIN__ = .);
|
*(.eh_frame)
|
*(.eh_frame)
|
PROVIDE (__EH_FRAME_END__ = .);
|
PROVIDE (__EH_FRAME_END__ = .);
|
}
|
}
|
_fdata = ALIGN(16);
|
_fdata = ALIGN(16);
|
.data : {
|
.data : {
|
*(.data)
|
*(.data)
|
*(.gcc_except_table)
|
*(.gcc_except_table)
|
*(.gcc_exc)
|
*(.gcc_exc)
|
}
|
}
|
. = ALIGN(8);
|
. = ALIGN(8);
|
_gp = . + 0x8000;
|
_gp = . + 0x8000;
|
__global = . + 0x8000;
|
__global = . + 0x8000;
|
.lit8 : {
|
.lit8 : {
|
*(.lit8)
|
*(.lit8)
|
}
|
}
|
.lit4 : {
|
.lit4 : {
|
*(.lit4)
|
*(.lit4)
|
}
|
}
|
.sdata : {
|
.sdata : {
|
*(.sdata)
|
*(.sdata)
|
}
|
}
|
. = ALIGN(4);
|
. = ALIGN(4);
|
PROVIDE(_edata = .);
|
PROVIDE(_edata = .);
|
PROVIDE(__edata = .);
|
PROVIDE(__edata = .);
|
fbss = .;
|
fbss = .;
|
_fbss = .;
|
_fbss = .;
|
.sbss : {
|
.sbss : {
|
PROVIDE(__bss_start = .);
|
PROVIDE(__bss_start = .);
|
*(.sbss)
|
*(.sbss)
|
*(.scommon)
|
*(.scommon)
|
}
|
}
|
.bss : {
|
.bss : {
|
*(.bss)
|
*(.bss)
|
*(COMMON)
|
*(COMMON)
|
PROVIDE(__bss_end = .);
|
PROVIDE(__bss_end = .);
|
}
|
}
|
PROVIDE(_end = .);
|
PROVIDE(_end = .);
|
PROVIDE(__end = .);
|
PROVIDE(__end = .);
|
}
|
}
|
|
|