⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nios2elf_pe4.l

📁 FDMP the body of the kernel, the Information-Technology Promotion Agency (IPA) adopted by the unexpl
💻 L
字号:
MEMORY{    reset : ORIGIN = 0x04100000, LENGTH = 32    ext_flash : ORIGIN = 0x00000020, LENGTH = 8388576    ext_ram : ORIGIN = 0x07000000, LENGTH = 1048576    sdram : ORIGIN = 0x05000000, LENGTH = 16777216    onchip_ram_1 : ORIGIN = 0x01100020, LENGTH = 65504    onchip_ram_2 : ORIGIN = 0x02100020, LENGTH = 65504    onchip_ram_3 : ORIGIN = 0x03100020, LENGTH = 65504    onchip_ram_4 : ORIGIN = 0x04100020, LENGTH = 65504}    /* Define symbols for each memory base-address */ __alt_mem_ext_flash = 0x00000000 ; __alt_mem_ext_ram = 0x07000000 ; __alt_mem_sdram = 0x05000000 ; __alt_mem_onchip_ram_1 = 0x01100000 ; __alt_mem_onchip_ram_2 = 0x02100000 ; __alt_mem_onchip_ram_3 = 0x03100000 ; __alt_mem_onchip_ram_4 = 0x04100000 ;PROVIDE(_hardware_init_hook = 0);PROVIDE(_software_init_hook = 0);PROVIDE(software_term_hook = 0);OUTPUT_FORMAT( "elf32-littlenios2",               "elf32-littlenios2",               "elf32-littlenios2" )OUTPUT_ARCH( nios2 )ENTRY( _start )/* Do we need any of these for elf?   __DYNAMIC = 0; */SECTIONS{    .entry :    {        KEEP (*(.entry))    } > reset    .exceptions :    {        PROVIDE (__ram_exceptions_start = ABSOLUTE(.));        . = ALIGN(0x20);        *(.irq)        KEEP (*(.exceptions.entry.label));        KEEP (*(.exceptions.entry.user));        KEEP (*(.exceptions.entry));        KEEP (*(.exceptions.irqtest.user));        KEEP (*(.exceptions.irqtest));        KEEP (*(.exceptions.irqhandler.user));        KEEP (*(.exceptions.irqhandler));        KEEP (*(.exceptions.irqreturn.user));        KEEP (*(.exceptions.irqreturn));        KEEP (*(.exceptions.notirq.label));        KEEP (*(.exceptions.notirq.user));        KEEP (*(.exceptions.notirq));        KEEP (*(.exceptions.soft.user));        KEEP (*(.exceptions.soft));        KEEP (*(.exceptions.unknown.user));        KEEP (*(.exceptions.unknown));        KEEP (*(.exceptions.exit.label));        KEEP (*(.exceptions.exit.user));        KEEP (*(.exceptions.exit));        KEEP (*(.exceptions));        PROVIDE (__ram_exceptions_end = ABSOLUTE(.));    } > onchip_ram_4    PROVIDE (__flash_exceptions_start = LOADADDR(.exceptions));    .text :    {        /*         * All code sections are merged into the text output section, along with         * the read only data sections.         *         */        PROVIDE (stext = ABSOLUTE(.));        *(.interp)        *(.hash)        *(.dynsym)        *(.dynstr)        *(.gnu.version)        *(.gnu.version_d)        *(.gnu.version_r)        *(.rel.init)        *(.rela.init)        *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)        *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)        *(.rel.fini)        *(.rela.fini)        *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)        *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)        *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)        *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)        *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)        *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)        *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)        *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)        *(.rel.ctors)        *(.rela.ctors)        *(.rel.dtors)        *(.rela.dtors)        *(.rel.got)        *(.rela.got)        *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)        *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)        *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)        *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)        *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)        *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)        *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)        *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)        *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)        *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)        *(.rel.plt)        *(.rela.plt)        KEEP (*(.init))        *(.plt)        *(.text .stub .text.* .gnu.linkonce.t.*)        /* .gnu.warning sections are handled specially by elf32.em.  */        *(.gnu.warning.*)        KEEP (*(.fini))        PROVIDE (__etext = ABSOLUTE(.));        PROVIDE (_etext = ABSOLUTE(.));        PROVIDE (etext = ABSOLUTE(.));        *(.eh_frame_hdr)        /* Ensure the __preinit_array_start label is properly aligned.  We           could instead move the label definition inside the section, but           the linker would then create the section even if it turns out to           be empty, which isn't pretty.  */        . = ALIGN(32 / 8);        PROVIDE (__preinit_array_start = ABSOLUTE(.));        *(.preinit_array)        PROVIDE (__preinit_array_end = ABSOLUTE(.));        PROVIDE (__init_array_start = ABSOLUTE(.));        *(.init_array)        PROVIDE (__init_array_end = ABSOLUTE(.));        PROVIDE (__fini_array_start = ABSOLUTE(.));        *(.fini_array)        PROVIDE (__fini_array_end = ABSOLUTE(.));        SORT(CONSTRUCTORS)        KEEP (*(.eh_frame))        *(.gcc_except_table)        *(.dynamic)        PROVIDE (__CTOR_LIST__ = ABSOLUTE(.));        KEEP (*(.ctors))        KEEP (*(SORT(.ctors.*)))        PROVIDE (__CTOR_END__ = ABSOLUTE(.));        PROVIDE (__DTOR_LIST__ = ABSOLUTE(.));        KEEP (*(.dtors))        KEEP (*(SORT(.dtors.*)))        PROVIDE (__DTOR_END__ = ABSOLUTE(.));        KEEP (*(.jcr))        . = ALIGN(32 / 8);    } >  onchip_ram_4    .rodata :    {        PROVIDE (__ram_rodata_start = ABSOLUTE(.));        . = ALIGN(32 / 8);        *(.rodata .rodata.* .gnu.linkonce.r.*)        *(.rodata1)        . = ALIGN(32 / 8);        PROVIDE (__ram_rodata_end = ABSOLUTE(.));    } > onchip_ram_4    PROVIDE (__flash_rodata_start = LOADADDR(.rodata));    .rwdata  :    {        PROVIDE (__ram_rwdata_start = ABSOLUTE(.));        . = ALIGN(32 / 8);        *(.got.plt) *(.got)        *(.data1)        *(.data .data.* .gnu.linkonce.d.*)        _gp = ABSOLUTE(. + 0x8000);        PROVIDE(gp = _gp);        *(.sdata .sdata.* .gnu.linkonce.s.*)        *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)        . = ALIGN(32 / 8);        _edata = ABSOLUTE(.);        PROVIDE (edata = ABSOLUTE(.));        PROVIDE (__ram_rwdata_end = ABSOLUTE(.));    } > onchip_ram_4    PROVIDE (__flash_rwdata_start = LOADADDR(.rwdata));    .bss :    {        __bss_start = ABSOLUTE(.);        PROVIDE (__sbss_start = ABSOLUTE(.));        PROVIDE (___sbss_start = ABSOLUTE(.));        *(.dynsbss)        *(.sbss .sbss.* .gnu.linkonce.sb.*)        *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)        *(.scommon)        PROVIDE (__sbss_end = ABSOLUTE(.));        PROVIDE (___sbss_end = ABSOLUTE(.));        *(.dynbss)        *(.bss .bss.* .gnu.linkonce.b.*)        *(COMMON)        . = ALIGN(32 / 8);        __bss_end = ABSOLUTE(.);    } > onchip_ram_4    .shared :    {        *(.shared_memory)    } > ext_ram    /*     * One output section for each of the available partitions. These are not     * used by default, but can be used by users applications using the .section     * directive.     *     * The memory partition used for the heap is treated in  special way, i.e. a     * symbol is added to point to the heap start.     *     * Note that when running from flash, these sections are not loaded by the     * HAL.     *     */    .ext_flash :    {        PROVIDE (_alt_partition_ext_flash_start = ABSOLUTE(.));        *(.ext_flash .ext_flash.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_ext_flash_end = ABSOLUTE(.));    } > ext_flash    PROVIDE (_alt_partition_ext_flash_load_addr = LOADADDR(.ext_flash));    .ext_ram :    {        PROVIDE (_alt_partition_ext_ram_start = ABSOLUTE(.));        *(.ext_ram .ext_ram.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_ext_ram_end = ABSOLUTE(.));    } > ext_ram    PROVIDE (_alt_partition_ext_ram_load_addr = LOADADDR(.ext_ram));    .sdram :    {        PROVIDE (_alt_partition_sdram_start = ABSOLUTE(.));        *(.sdram .sdram.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_sdram_end = ABSOLUTE(.));        _end = ABSOLUTE(.);        end = ABSOLUTE(.);    } > sdram    PROVIDE (_alt_partition_sdram_load_addr = LOADADDR(.sdram));    .onchip_ram_1 :    {        PROVIDE (_alt_partition_onchip_ram_1_start = ABSOLUTE(.));        *(.onchip_ram_1 .onchip_ram_1.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_onchip_ram_1_end = ABSOLUTE(.));    } > onchip_ram_1    PROVIDE (_alt_partition_onchip_ram_1_load_addr = LOADADDR(.onchip_ram_1));    .onchip_ram_2 :    {        PROVIDE (_alt_partition_onchip_ram_2_start = ABSOLUTE(.));        *(.onchip_ram_2 .onchip_ram_2.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_onchip_ram_2_end = ABSOLUTE(.));    } > onchip_ram_2    PROVIDE (_alt_partition_onchip_ram_2_load_addr = LOADADDR(.onchip_ram_2));    .onchip_ram_3 :    {        PROVIDE (_alt_partition_onchip_ram_3_start = ABSOLUTE(.));        *(.onchip_ram_3 .onchip_ram_3.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_onchip_ram_3_end = ABSOLUTE(.));    } > onchip_ram_3    PROVIDE (_alt_partition_onchip_ram_3_load_addr = LOADADDR(.onchip_ram_3));    .onchip_ram_4 :    {        PROVIDE (_alt_partition_onchip_ram_4_start = ABSOLUTE(.));        *(.onchip_ram_4 .onchip_ram_4.*)        . = ALIGN(32 / 8);        PROVIDE (_alt_partition_onchip_ram_4_end = ABSOLUTE(.));    } > onchip_ram_4    PROVIDE (_alt_partition_onchip_ram_4_load_addr = LOADADDR(.onchip_ram_4));    /*     * 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) }    .comment       0 : { *(.comment) }    /* 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 .gnu.linkonce.wi.*) }    .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) }    /* SGI/MIPS DWARF 2 extensions */    .debug_weaknames 0 : { *(.debug_weaknames) }    .debug_funcnames 0 : { *(.debug_funcnames) }    .debug_typenames 0 : { *(.debug_typenames) }    .debug_varnames  0 : { *(.debug_varnames) }    /* Altera debug extensions */    .debug_alt_sim_info 0 : { *(.debug_alt_sim_info) }}/* provide a pointer for the stack *//* * Don't override this, override the __alt_stack_* symbols instead. */__alt_data_end = 0x06000000;/* * The next two symbols define the location of the default stack.  You can * override them to move the stack to a different memory. */PROVIDE( __alt_stack_pointer = __alt_data_end );PROVIDE( __alt_stack_limit   = _end );/* * This symbol controls where the start of the heap is.  If the stack is * contiguous with the heap then the stack will contract as memory is * allocated to the heap. * Override this symbol to put the heap in a different memory. */PROVIDE( __alt_heap_start    = end );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -