mirror of
				https://github.com/Atmosphere-NX/Atmosphere.git
				synced 2025-11-04 04:51:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			169 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
 | 
						|
OUTPUT_ARCH(arm)
 | 
						|
ENTRY(_start)
 | 
						|
 | 
						|
PHDRS
 | 
						|
{
 | 
						|
    crt0        PT_LOAD;
 | 
						|
    main        PT_LOAD;
 | 
						|
}
 | 
						|
 | 
						|
/* Mostly copied from https://github.com/devkitPro/buildscripts/blob/master/dkarm-eabi/crtls/3dsx.ld */
 | 
						|
MEMORY
 | 
						|
{
 | 
						|
    NULL        : ORIGIN = 0x00000000, LENGTH = 0x1000
 | 
						|
    main        : ORIGIN = 0x40010000, LENGTH = 0x1000
 | 
						|
    high_iram   : ORIGIN = 0x4003F000, LENGTH = 0x1000
 | 
						|
    low_iram    : ORIGIN = 0x40003000, LENGTH = 0x8000
 | 
						|
}
 | 
						|
 | 
						|
SECTIONS
 | 
						|
{
 | 
						|
    PROVIDE(__crt0_start__      = 0x4003F000);
 | 
						|
    PROVIDE(__main_start__      = 0x40010000);
 | 
						|
    PROVIDE(__stack_top__       = 0x40010000);
 | 
						|
    PROVIDE(__stack_bottom__    = 0x4000C000);
 | 
						|
    PROVIDE(__heap_start__      = 0);
 | 
						|
    PROVIDE(__heap_end__        = 0);
 | 
						|
    
 | 
						|
    . = __crt0_start__;
 | 
						|
 | 
						|
    .crt0 :
 | 
						|
    {
 | 
						|
        KEEP( *(.text.start) )
 | 
						|
        KEEP( *(.text.ipatch_word) )
 | 
						|
        KEEP( *(.init) )
 | 
						|
        . = ALIGN(32);
 | 
						|
    } >high_iram AT>high_iram :crt0
 | 
						|
    
 | 
						|
    __main_phys_start__ = ABSOLUTE(.) ;
 | 
						|
    
 | 
						|
    .text :
 | 
						|
    {
 | 
						|
        /* .text */
 | 
						|
        KEEP( *(.text.jump_to_main) )
 | 
						|
        *(.text)
 | 
						|
        *(.text.*)
 | 
						|
        *(.glue_7)
 | 
						|
        *(.glue_7t)
 | 
						|
        *(.stub)
 | 
						|
        *(.gnu.warning)
 | 
						|
        *(.gnu.linkonce.t*)
 | 
						|
 | 
						|
        /* .fini */
 | 
						|
        KEEP( *(.fini) )
 | 
						|
        . = ALIGN(8);
 | 
						|
    } >main  AT>high_iram :main
 | 
						|
 | 
						|
    .rodata :
 | 
						|
    {
 | 
						|
        *(.rodata)
 | 
						|
        *(.roda)
 | 
						|
        *(.rodata.*)
 | 
						|
        *all.rodata*(*)
 | 
						|
        *(.gnu.linkonce.r*)
 | 
						|
        SORT(CONSTRUCTORS)
 | 
						|
        . = ALIGN(8);
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .preinit_array :
 | 
						|
    {
 | 
						|
        PROVIDE (__preinit_array_start = .);
 | 
						|
        KEEP (*(.preinit_array))
 | 
						|
        PROVIDE (__preinit_array_end = .);
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .init_array ALIGN(4) :
 | 
						|
    {
 | 
						|
        PROVIDE (__init_array_start = .);
 | 
						|
        KEEP (*(SORT(.init_array.*)))
 | 
						|
        KEEP (*(.init_array))
 | 
						|
        PROVIDE (__init_array_end = .);
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .fini_array ALIGN(4) :
 | 
						|
    {
 | 
						|
        PROVIDE (__fini_array_start = .);
 | 
						|
        KEEP (*(.fini_array))
 | 
						|
        KEEP (*(SORT(.fini_array.*)))
 | 
						|
        PROVIDE (__fini_array_end = .);
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .ctors ALIGN(4) :
 | 
						|
    {
 | 
						|
        KEEP (*crtbegin.o(.ctors)) /* MUST be first -- GCC requires it */
 | 
						|
        KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
 | 
						|
        KEEP (*(SORT(.ctors.*)))
 | 
						|
        KEEP (*(.ctors))
 | 
						|
        . = ALIGN(4);   /* REQUIRED. LD is flaky without it. */
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .dtors ALIGN(4) :
 | 
						|
    {
 | 
						|
        KEEP (*crtbegin.o(.dtors))
 | 
						|
        KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
 | 
						|
        KEEP (*(SORT(.dtors.*)))
 | 
						|
        KEEP (*(.dtors))
 | 
						|
        . = ALIGN(4);   /* REQUIRED. LD is flaky without it. */
 | 
						|
    } >main AT>high_iram 
 | 
						|
 | 
						|
    .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) __exidx_start = ABSOLUTE(.);} >main AT>high_iram 
 | 
						|
    ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*)  __exidx_end = ABSOLUTE(.);} >main AT>high_iram 
 | 
						|
 | 
						|
    .bss (NOLOAD) :
 | 
						|
    {
 | 
						|
        . = ALIGN(32);
 | 
						|
        PROVIDE (__bss_start__ = ABSOLUTE(.));
 | 
						|
        *(.dynbss)
 | 
						|
        *(.bss)
 | 
						|
        *(.bss.*)
 | 
						|
        *(.gnu.linkonce.b*)
 | 
						|
        *(COMMON)
 | 
						|
        . = ALIGN(32);
 | 
						|
        PROVIDE (__bss_end__ = ABSOLUTE(.));
 | 
						|
    } >main AT>high_iram :NONE
 | 
						|
    __main_end__ = ABSOLUTE(.) ;
 | 
						|
    
 | 
						|
    PROVIDE(__main_size__    = (__main_end__ - __main_start__));
 | 
						|
 | 
						|
    /* ==================
 | 
						|
       ==== Metadata ====
 | 
						|
       ================== */
 | 
						|
 | 
						|
    /* Discard sections that difficult post-processing */
 | 
						|
    /DISCARD/ : { *(.group .comment .note) }
 | 
						|
 | 
						|
    /* Stabs debugging sections. */
 | 
						|
    .stab          0 : { *(.stab) }
 | 
						|
    .stabstr       0 : { *(.stabstr) }
 | 
						|
    .stab.excl     0 : { *(.stab.excl) }
 | 
						|
    .stab.exclstr  0 : { *(.stab.exclstr) }
 | 
						|
    .stab.index    0 : { *(.stab.index) }
 | 
						|
    .stab.indexstr 0 : { *(.stab.indexstr) }
 | 
						|
 | 
						|
    /* DWARF debug sections.
 | 
						|
       Symbols in the DWARF debugging sections are relative to the beginning
 | 
						|
       of the section so we begin them at 0. */
 | 
						|
 | 
						|
    /* DWARF 1 */
 | 
						|
    .debug          0 : { *(.debug) }
 | 
						|
    .line           0 : { *(.line) }
 | 
						|
 | 
						|
    /* GNU DWARF 1 extensions */
 | 
						|
    .debug_srcinfo  0 : { *(.debug_srcinfo) }
 | 
						|
    .debug_sfnames  0 : { *(.debug_sfnames) }
 | 
						|
 | 
						|
    /* DWARF 1.1 and DWARF 2 */
 | 
						|
    .debug_aranges  0 : { *(.debug_aranges) }
 | 
						|
    .debug_pubnames 0 : { *(.debug_pubnames) }
 | 
						|
 | 
						|
    /* DWARF 2 */
 | 
						|
    .debug_info     0 : { *(.debug_info) }
 | 
						|
    .debug_abbrev   0 : { *(.debug_abbrev) }
 | 
						|
    .debug_line     0 : { *(.debug_line) }
 | 
						|
    .debug_frame    0 : { *(.debug_frame) }
 | 
						|
    .debug_str      0 : { *(.debug_str) }
 | 
						|
    .debug_loc      0 : { *(.debug_loc) }
 | 
						|
    .debug_macinfo  0 : { *(.debug_macinfo) }
 | 
						|
}
 |