127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								OUTPUT_ARCH( "riscv" )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ENTRY( _start )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MEMORY
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  romlib (rxai!w) : ORIGIN = 0x00024000, LENGTH = 240K
							 | 
						||
| 
								 | 
							
								  crypto (wxa!ri) : ORIGIN = 0x10000000, LENGTH = 2K
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SECTIONS
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .init           :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    KEEP (*(SORT_NONE(.init)))
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .text           :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    *(.text .text.*)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.t.*)
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .fini           :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    KEEP (*(SORT_NONE(.fini)))
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .rodata         :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
									*(.rodata .rodata.* .rdata)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.r.*)
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  . = ALIGN(4);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .preinit_array  :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    PROVIDE_HIDDEN (__preinit_array_start = .);
							 | 
						||
| 
								 | 
							
								    KEEP (*(.preinit_array))
							 | 
						||
| 
								 | 
							
								    PROVIDE_HIDDEN (__preinit_array_end = .);
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .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 = .);
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .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 = .);
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .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))
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .dtors          :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    KEEP (*crtbegin.o(.dtors))
							 | 
						||
| 
								 | 
							
								    KEEP (*crtbegin?.o(.dtors))
							 | 
						||
| 
								 | 
							
								    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
							 | 
						||
| 
								 | 
							
								    KEEP (*(SORT(.dtors.*)))
							 | 
						||
| 
								 | 
							
								    KEEP (*(.dtors))
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .lalign         :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    . = ALIGN(4);
							 | 
						||
| 
								 | 
							
								    PROVIDE( _data_load_addr = . );
							 | 
						||
| 
								 | 
							
								  } >romlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  .dalign         :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    . = ALIGN(4);
							 | 
						||
| 
								 | 
							
								    PROVIDE( _data_start = . );
							 | 
						||
| 
								 | 
							
								  } >crypto AT>romlib
							 | 
						||
| 
								 | 
							
								  .data          :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    *(.data .data.*)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.d.*)
							 | 
						||
| 
								 | 
							
								    PROVIDE( _gp = . + 0x800 );
							 | 
						||
| 
								 | 
							
								    *(.srodata.cst16 .srodata.cst8 .srodata.cst4 .srodata.cst2)
							 | 
						||
| 
								 | 
							
								    *(.sdata .sdata.* .srodata .srodata.*)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.s.*)
							 | 
						||
| 
								 | 
							
								  } >crypto AT>romlib
							 | 
						||
| 
								 | 
							
								  . = ALIGN(4);
							 | 
						||
| 
								 | 
							
								  PROVIDE( _data_end = . );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  PROVIDE( _bss_start = . );
							 | 
						||
| 
								 | 
							
								  .bss            :
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    *(.sbss*)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.sb.*)
							 | 
						||
| 
								 | 
							
								    *(.bss .bss.*)
							 | 
						||
| 
								 | 
							
								    *(.gnu.linkonce.b.*)
							 | 
						||
| 
								 | 
							
								    *(COMMON)
							 | 
						||
| 
								 | 
							
								    . = ALIGN(4);
							 | 
						||
| 
								 | 
							
								  } >crypto
							 | 
						||
| 
								 | 
							
								  . = ALIGN(8);
							 | 
						||
| 
								 | 
							
								  PROVIDE( _bss_end = . );
							 | 
						||
| 
								 | 
							
								}
							 |