diff options
author | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
commit | cf3cdbf8b3cda61a619299e7966a83df66244036 (patch) | |
tree | 201e2bcfc955f16802d3257112d29736cb3a3ce8 /binutils-2.21/ld/scripttempl/ip2k.sc | |
parent | e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 (diff) | |
download | toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.zip toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.gz toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.bz2 |
Add binutils-2.21.
Use --enable-gold=default for dual linker support.
Change-Id: Id1a744c7db58a0b5e7a3be174cdfa875f2f86e49
Diffstat (limited to 'binutils-2.21/ld/scripttempl/ip2k.sc')
-rw-r--r-- | binutils-2.21/ld/scripttempl/ip2k.sc | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/binutils-2.21/ld/scripttempl/ip2k.sc b/binutils-2.21/ld/scripttempl/ip2k.sc new file mode 100644 index 0000000..b10013a --- /dev/null +++ b/binutils-2.21/ld/scripttempl/ip2k.sc @@ -0,0 +1,150 @@ +cat << EOF +OUTPUT_FORMAT("elf32-ip2k", "elf32-ip2k", "elf32-ip2k") +OUTPUT_ARCH(ip2k) +${RELOCATING+ENTRY(_start)} +SEARCH_DIR(.); + +/* IP2022 default linker script. */ + +MEMORY +{ + D_GPR : org = 0x01000080, len = 128 + D_RAM : org = 0x01000100, len = 4K - 256 + P_RAM : org = 0x02000000, len = 16K + P_ROM : org = 0x02010000, len = 64K - 32 + P_RESET : org = 0x0201FFE0, len = 32 + P_CONFIG : org = 0x02020000, len = 128 +} + +SECTIONS +{ + /* Allocated memory end markers + (initialized to start of appropiate memory address). */ + __data_end = 0x01000100; + __pram_end = 0x02000000; + __flash_end = 0x02010000; + + /* Global general purpose registers in direct addressing range. */ + .gpr 0x01000080 : + { + *(.gpr) + } >D_GPR + + /* Pre-allocated, pre-initialized data memory. */ + __data_run_begin = __data_end; + __data_load_begin = (__flash_end + 1) & 0xFFFFFFFE; + .data __data_run_begin : AT (__data_load_begin) + { + * (.data); + * (.rodata) + } >D_RAM + __data_run_end = __data_run_begin + SIZEOF(.data); + __data_load_end = __data_load_begin + SIZEOF(.data); + __data_end = __data_run_end; + __flash_end = __data_load_end; + + /* Pre-allocated, uninitialized data memory. */ + __bss_begin = __data_end; + .bss __bss_begin : + { + * (.bss) + } >D_RAM + __bss_end = __bss_begin + SIZEOF(.bss); + __data_end = __bss_end; + + /* Pre-allocated PRAM data memory. */ + __pram_data_begin = (__pram_end + 1) & 0xFFFFFFFE; + .pram_data __pram_data_begin : + { + * (.pram_data) + } >P_RAM + __pram_data_end = __pram_data_begin + SIZEOF(.pram_data); + __pram_end = __pram_data_end; + + /* PRAM code. */ + __pram_run_begin = (__pram_end + 1) & 0xFFFFFFFE; + __pram_load_begin = (__flash_end + 1) & 0xFFFFFFFE; + .pram __pram_run_begin : AT (__pram_load_begin) + { + * (.pram) + } >P_RAM + __pram_run_end = __pram_run_begin + SIZEOF(.pram); + __pram_load_end = __pram_load_begin + SIZEOF(.pram); + + __pram_load_shift = ((__pram_run_begin - __pram_load_begin) & 0x1FFFF) | 0x02000000; + __pram_end = __pram_run_end; + __flash_end = __pram_load_end; + + /* PRAM overlay code. */ + __pram_overlay_run_start = (__pram_end + 1) & 0xFFFFFFFE; + __pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE; + OVERLAY __pram_overlay_run_start : AT (__pram_overlay_load_start) + { + .pram1 { */overlay1/* (.pram); * (.pram1) } + .pram2 { */overlay2/* (.pram); * (.pram2) } + } >P_RAM + __pram_overlay_run_end = .; + __pram_overlay_load_end = __pram_overlay_load_start + SIZEOF(.pram1) + SIZEOF(.pram2); + __pram_end = __pram_overlay_run_end; + __flash_end = __pram_overlay_load_end; + + /* Flash code. */ + __text_begin = (__flash_end + 1) & 0xFFFFFFFE; + .text __text_begin : + { + * (.text); + * (.text.libgcc) + } >P_ROM = 0xffff + __text_end = __text_begin + SIZEOF(.text); + __flash_end = __text_end; + + /* Strings. */ + __strings_begin = (__flash_end + 1) & 0xFFFFFFFE; + .strings __strings_begin : + { + * (strings); + * (.progmem.data) + } >P_ROM = 0xffff + __strings_end = __strings_begin + SIZEOF (.strings); + __flash_end = __strings_end; + + .ctors : { * (.ctors) } > P_ROM + .dtors : { * (.dtors) } > P_ROM + + /* Reset code. */ + .reset : { * (.reset) } >P_RESET = 0xffff + + /* Configuration block. */ + .config : { * (.config) } >P_CONFIG = 0xffff + + /* Stack. */ + PROVIDE (__stack = 0x01000FFF); + + /* 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 1. */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions. */ + .debug_srcinfo 0 : { *(.debug_srcinfo .zdebug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames .zdebug_sfnames) } + /* DWARF 1.1 and DWARF 2. */ + .debug_aranges 0 : { *(.debug_aranges .zdebug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames .zdebug_pubnames) } + /* DWARF 2. */ + .debug_info 0 : { *(.debug_info${RELOCATING+ .gnu.linkonce.wi.*} .zdebug_info) } + .debug_abbrev 0 : { *(.debug_abbrev .zdebug_abbrev) } + .debug_line 0 : { *(.debug_line .zdebug_line) } + .debug_frame 0 : { *(.debug_frame .zdebug_frame) } + .debug_str 0 : { *(.debug_str .zdebug_str) } + .debug_loc 0 : { *(.debug_loc .zdebug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo .zdebug_macinfo) } +} +EOF |