diff options
Diffstat (limited to 'ld/scripttempl/epiphany_4x4.sc')
-rw-r--r-- | ld/scripttempl/epiphany_4x4.sc | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/ld/scripttempl/epiphany_4x4.sc b/ld/scripttempl/epiphany_4x4.sc index b661fc2..3fa6c86 100644 --- a/ld/scripttempl/epiphany_4x4.sc +++ b/ld/scripttempl/epiphany_4x4.sc @@ -1,5 +1,5 @@ # Copyright (C) 2014-2017 Free Software Foundation, Inc. -# +# # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. @@ -45,15 +45,15 @@ # NO_RELA_RELOCS - Don't include .rela.* sections in script # NON_ALLOC_DYN - Place dynamic sections after data segment. # TEXT_DYNAMIC - .dynamic in text segment, not data segment. -# EMBEDDED - whether this is for an embedded system. +# EMBEDDED - whether this is for an embedded system. # SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set # start address of shared library. # INPUT_FILES - INPUT command of files to always include # WRITABLE_RODATA - if set, the .rodata section should be writable # INIT_START, INIT_END - statements just before and just after -# combination of .init sections. +# combination of .init sections. # FINI_START, FINI_END - statements just before and just after -# combination of .fini sections. +# combination of .fini sections. # OTHER_SYMBOLS - symbols to place right at the end of the script. # ETEXT_NAME - name of a symbol for the end of the text section, # normally etext. @@ -147,7 +147,7 @@ if test -z "${NO_SMALL_DATA}"; then SDATA="/* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ - .sdata ${RELOCATING-0} : + .sdata ${RELOCATING-0} : { ${RELOCATING+${SDATA_START_SYMBOLS}} ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)} @@ -205,7 +205,7 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS=" *(.ldata${RELOCATING+ .ldata.* .gnu.linkonce.l.*}) ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} }" -CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} : +CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} : { ${CONSTRUCTING+${CTOR_START}} /* gcc uses crtbegin.o to find the start of @@ -230,7 +230,7 @@ CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} : KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) ${CONSTRUCTING+${CTOR_END}} - } /*> INTERNAL_RAM*/" + } /*> INTERNAL_RAM*/" DTOR=".dtors ADDR(.ctors) + SIZEOF(.ctors) ${CONSTRUCTING-0} : { ${CONSTRUCTING+${DTOR_START}} @@ -291,26 +291,26 @@ __CORE_NUM_ = (__CORE_ROW_ - __FIRST_CORE_ROW_ )* __MAX_NUM_CORES_IN_COLS__ + MEMORY { - EXTERNAL_DRAM_0 (WXAI) : ORIGIN = 0x80000000, LENGTH = 0x1000000 /*.text, data, rodata, bss and .stack*/ + EXTERNAL_DRAM_0 (WXAI) : ORIGIN = 0x80000000, LENGTH = 0x1000000 /*.text, data, rodata, bss and .stack*/ EXTERNAL_DRAM_1 (WXAI) : ORIGIN = 0x81000000, LENGTH = 0x1000000 /*.heap */ - + EXTERNAL_SRAM (WXAI) : ORIGIN = 0x92000000, LENGTH = 8K /* small external RAM, used for testing*/ - + /* run time lib and crt0*/ RESERVED_CRT0_RAM (WXAI) : ORIGIN = 0, LENGTH = 0x400 - + /* user program, per bank usage */ BANK0_SRAM (WXAI) : ORIGIN = LENGTH(RESERVED_CRT0_RAM), LENGTH = 8K - LENGTH(RESERVED_CRT0_RAM) BANK1_SRAM (WXAI) : ORIGIN = 0x2000, LENGTH = 8K BANK2_SRAM (WXAI) : ORIGIN = 0x4000, LENGTH = 8K BANK3_SRAM (WXAI) : ORIGIN = 0x6000, LENGTH = 8K - + /* user program, continious placement */ INTERNAL_RAM (WXAI) : ORIGIN = LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K - LENGTH(RESERVED_CRT0_RAM) - - MMR (WAI) : ORIGIN = 0xF000, LENGTH = 32K - - /* multi cores space */ + + MMR (WAI) : ORIGIN = 0xF000, LENGTH = 32K + + /* multi cores space */ CORE_0x20_0x24_INTERNAL_RAM : ORIGIN = 0x82400000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) CORE_0x20_0x25_INTERNAL_RAM : ORIGIN = 0x82500000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) CORE_0x20_0x26_INTERNAL_RAM : ORIGIN = 0x82600000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) @@ -328,7 +328,7 @@ MEMORY CORE_0x23_0x26_INTERNAL_RAM : ORIGIN = 0x8e600000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) CORE_0x23_0x27_INTERNAL_RAM : ORIGIN = 0x8e700000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) CORE_0x24_0x24_INTERNAL_RAM : ORIGIN = 0x82000000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM) - + } @@ -338,35 +338,35 @@ SECTIONS IVT 0 : {*.o(IVT) } > RESERVED_CRT0_RAM RESERVED_CRT0 : {*.o(RESERVED_CRT0) } > RESERVED_CRT0_RAM RESERVED_CRT0 : {*.o(reserved_crt0) } > RESERVED_CRT0_RAM - + CORE_RAM_0 : {*.o(core_ram_0) } > BANK0_SRAM CORE_RAM_1 : {*.o(core_ram_1) } > BANK1_SRAM CORE_RAM_2 : {*.o(core_ram_2) } > BANK2_SRAM CORE_RAM_3 : {*.o(core_ram_3) } > BANK3_SRAM - + SRAM_SOUTH : {*.o(sram) } > EXTERNAL_SRAM DRAM_WEST : {*.o(dram) } > EXTERNAL_DRAM_1 - + CORE_INTERNAL : {*.o(core_ram_internal) } /*> INTERNAL_RAM*/ - + /* the newlib (libc and libm) library is maped to the dedicated section */ - + __new_lib_start_external_ = ( ORIGIN(EXTERNAL_DRAM_0) + __PROG_SIZE_FOR_CORE__ *__CORE_NUM_ ); __new_lib_start_ = DEFINED(__USE_INTERNAL_MEM_FOR_NEW_LIB_) ? ORIGIN(BANK1_SRAM) : __new_lib_start_external_ ; - + NEW_LIB_RO ${RELOCATING+__new_lib_start_} : { lib_a-*.o(.text .rodata ) *.o(libgloss_epiphany) } /* > INTERNAL_RAM*/ - GNU_C_BUILTIN_LIB_RO ADDR(NEW_LIB_RO) + SIZEOF(NEW_LIB_RO) : { - *mulsi3.o(.text .rodata) *modsi3.o(.text .rodata) - *divsi3.o(.text .rodata) *udivsi3.o(.text .rodata) - *umodsi3.o(.text .rodata) _*.o(.text .rodata) - } - - NEW_LIB_WR ADDR(GNU_C_BUILTIN_LIB_RO) + SIZEOF(GNU_C_BUILTIN_LIB_RO) : { lib_a-*.o(.data ) } /* > INTERNAL_RAM*/ - - - __init_start = DEFINED(__USE_INTERNAL_MEM_) ? ORIGIN(BANK1_SRAM) : (ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) ) ; + GNU_C_BUILTIN_LIB_RO ADDR(NEW_LIB_RO) + SIZEOF(NEW_LIB_RO) : { + *mulsi3.o(.text .rodata) *modsi3.o(.text .rodata) + *divsi3.o(.text .rodata) *udivsi3.o(.text .rodata) + *umodsi3.o(.text .rodata) _*.o(.text .rodata) + } + + NEW_LIB_WR ADDR(GNU_C_BUILTIN_LIB_RO) + SIZEOF(GNU_C_BUILTIN_LIB_RO) : { lib_a-*.o(.data ) } /* > INTERNAL_RAM*/ + + + __init_start = DEFINED(__USE_INTERNAL_MEM_) ? ORIGIN(BANK1_SRAM) : (ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) ) ; __init_start = DEFINED(__USE_INTERNAL_MEM_FOR_NEW_LIB_) ? ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) : __init_start; - + /* Read-only sections, merged into text segment: */ /*${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}*/ @@ -433,13 +433,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF .rel.dyn ${RELOCATING-0} : { EOF -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ cat >> ldscripts/dyntmp.$$ <<EOF } .rela.dyn ${RELOCATING-0} : { EOF -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ cat >> ldscripts/dyntmp.$$ <<EOF } EOF @@ -456,19 +456,19 @@ if test -z "${NON_ALLOC_DYN}"; then cat ldscripts/dyntmp.$$ else if test -z "${NO_REL_RELOCS}"; then - sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ fi if test -z "${NO_RELA_RELOCS}"; then - sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ fi fi rm -f ldscripts/dyntmp.$$ fi cat <<EOF - - .init __init_start : - { + + .init __init_start : + { ${RELOCATING+${INIT_START}} KEEP (*(.init)) ${RELOCATING+${INIT_END}} @@ -476,14 +476,14 @@ cat <<EOF ${TEXT_PLT+${PLT}} ${TINY_READONLY_SECTION} - + .fini ${RELOCATING+ADDR(.init)+SIZEOF(.init)} ${RELOCATING-0} : { ${RELOCATING+${FINI_START}} KEEP (*(.fini)) ${RELOCATING+${FINI_END}} } /*> INTERNAL_RAM*/ =${NOP-0} - + .text ${RELOCATING+ADDR(.fini)+SIZEOF(.fini)} ${RELOCATING-0} : { ${RELOCATING+${TEXT_START_SYMBOLS}} @@ -497,7 +497,7 @@ cat <<EOF ${RELOCATING+PROVIDE (_${ETEXT_NAME} = .);} ${RELOCATING+PROVIDE (${ETEXT_NAME} = .);} ${WRITABLE_RODATA-${RODATA}} - .rodata1 ${RELOCATING-0} : { *(.rodata1) } + .rodata1 ${RELOCATING-0} : { *(.rodata1) } ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} @@ -524,21 +524,21 @@ cat <<EOF ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_start = .);}} KEEP (*(.preinit_array)) ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_end = .);}} - } + } .init_array ${RELOCATING-0} : { ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_start = .);}} KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_end = .);}} - } + } .fini_array ${RELOCATING-0} : { ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_start = .);}} KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}} - } + } ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}} ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}}} .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) } @@ -561,7 +561,7 @@ cat <<EOF *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*}) ${CONSTRUCTING+SORT(CONSTRUCTORS)} } /*> INTERNAL_RAM*/ - .data1 ${RELOCATING-0} : { *(.data1) } + .data1 ${RELOCATING-0} : { *(.data1) } ${WRITABLE_RODATA+${RODATA}} ${OTHER_READWRITE_SECTIONS} ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}}} @@ -615,10 +615,10 @@ if test -n "${NON_ALLOC_DYN}"; then cat ldscripts/dyntmp.$$ else if test -z "${NO_REL_RELOCS}"; then - sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ fi if test -z "${NO_RELA_RELOCS}"; then - sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ fi fi rm -f ldscripts/dyntmp.$$ |