OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [ldscript_example.x] - Diff between revs 142 and 145

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 142 Rev 145
/* Default linker script, for normal executables */
/* Default linker script, for normal executables */
OUTPUT_FORMAT("elf32-msp430","elf32-msp430","elf32-msp430")
OUTPUT_FORMAT("elf32-msp430")
OUTPUT_ARCH("msp430")
OUTPUT_ARCH("msp430")
MEMORY
MEMORY {
{
  sfr              : ORIGIN = 0x0000, LENGTH = 0x0010
  text   (rx)           : ORIGIN = 0xf800,      LENGTH = 2048
  peripheral_8bit  : ORIGIN = 0x0010, LENGTH = 0x00f0
  data   (rwx)          : ORIGIN = 0x0200,      LENGTH = 128
  peripheral_16bit : ORIGIN = 0x0100, LENGTH = 0x0100
  vectors (rw)          : ORIGIN = 0xffe0,      LENGTH = 32
 
}
  ram (wx)         : ORIGIN = 0x0200, LENGTH = 128
 
  rom (rx)         : ORIGIN = 0xf800, LENGTH = 2048-32
 
 
 
  vectors          : ORIGIN = 0xffe0, LENGTH = 32
 
 
 
  /* Remaining banks are absent */
 
  bsl              : ORIGIN = 0x0000, LENGTH = 0x0000
 
  infomem          : ORIGIN = 0x0000, LENGTH = 0x0000
 
  infob            : ORIGIN = 0x0000, LENGTH = 0x0000
 
  infoa            : ORIGIN = 0x0000, LENGTH = 0x0000
 
  infoc            : ORIGIN = 0x0000, LENGTH = 0x0000
 
  infod            : ORIGIN = 0x0000, LENGTH = 0x0000
 
  ram2 (wx)        : ORIGIN = 0x0000, LENGTH = 0x0000
 
  ram_mirror (wx)  : ORIGIN = 0x0000, LENGTH = 0x0000
 
  usbram (wx)      : ORIGIN = 0x0000, LENGTH = 0x0000
 
  far_rom          : ORIGIN = 0x00000000, LENGTH = 0x00000000
 
}
 
REGION_ALIAS("REGION_TEXT", rom);
 
REGION_ALIAS("REGION_DATA", ram);
 
REGION_ALIAS("REGION_FAR_ROM", far_rom);
__WDTCTL = 0x0120;
__WDTCTL = 0x0120;
 
__MPY    = 0x0130;
 
__MPYS   = 0x0132;
 
__MAC    = 0x0134;
 
__MACS   = 0x0136;
 
__OP2    = 0x0138;
 
__RESLO  = 0x013A;
 
__RESHI  = 0x013C;
 
__SUMEXT = 0x013E;
 
 
SECTIONS
SECTIONS
{
{
  PROVIDE (__stack = 0x0280) ;
 
 
 
  /* Read-only sections, merged into text segment.  */
  /* Read-only sections, merged into text segment.  */
  .hash          : { *(.hash)             }
  .hash            : { *(.hash)          }
  .dynsym        : { *(.dynsym)           }
  .dynsym          : { *(.dynsym)        }
  .dynstr        : { *(.dynstr)           }
  .dynstr          : { *(.dynstr)        }
  .gnu.version   : { *(.gnu.version)      }
  .gnu.version     : { *(.gnu.version)   }
  .gnu.version_d   : { *(.gnu.version_d)  }
  .gnu.version_d   : { *(.gnu.version_d) }
  .gnu.version_r   : { *(.gnu.version_r)  }
  .gnu.version_r   : { *(.gnu.version_r) }
  .rel.init      : { *(.rel.init) }
  .rel.init      : { *(.rel.init)  }
  .rela.init     : { *(.rela.init) }
  .rela.init     : { *(.rela.init) }
  .rel.text      :
 
    {
 
      *(.rel.text)
 
      *(.rel.text.*)
 
      *(.rel.gnu.linkonce.t*)
 
    }
 
  .rela.text     :
 
    {
 
      *(.rela.text)
 
      *(.rela.text.*)
 
      *(.rela.gnu.linkonce.t*)
 
    }
 
  .rel.fini      : { *(.rel.fini) }
  .rel.fini      : { *(.rel.fini) }
  .rela.fini     : { *(.rela.fini) }
  .rela.fini     : { *(.rela.fini) }
  .rel.rodata    :
  .rel.text      : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)        }
    {
  .rela.text     : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)     }
      *(.rel.rodata)
  .rel.rodata    : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)    }
      *(.rel.rodata.*)
  .rela.rodata   : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
      *(.rel.gnu.linkonce.r*)
  .rel.data      : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)        }
    }
  .rela.data     : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)     }
  .rela.rodata   :
  .rel.bss       : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)          }
    {
  .rela.bss      : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)       }
      *(.rela.rodata)
 
      *(.rela.rodata.*)
 
      *(.rela.gnu.linkonce.r*)
 
    }
 
  .rel.data      :
 
    {
 
      *(.rel.data)
 
      *(.rel.data.*)
 
      *(.rel.gnu.linkonce.d*)
 
    }
 
  .rela.data     :
 
    {
 
      *(.rela.data)
 
      *(.rela.data.*)
 
      *(.rela.gnu.linkonce.d*)
 
    }
 
  .rel.ctors     : { *(.rel.ctors)        }
  .rel.ctors     : { *(.rel.ctors)        }
  .rela.ctors    : { *(.rela.ctors)       }
  .rela.ctors    : { *(.rela.ctors) }
  .rel.dtors     : { *(.rel.dtors)        }
  .rel.dtors     : { *(.rel.dtors)  }
  .rela.dtors    : { *(.rela.dtors)       }
  .rela.dtors    : { *(.rela.dtors) }
  .rel.got       : { *(.rel.got)          }
  .rel.got       : { *(.rel.got)    }
  .rela.got      : { *(.rela.got)         }
  .rela.got      : { *(.rela.got)         }
  .rel.bss       : { *(.rel.bss)          }
 
  .rela.bss      : { *(.rela.bss)         }
 
  .rel.plt       : { *(.rel.plt)          }
  .rel.plt       : { *(.rel.plt)          }
  .rela.plt      : { *(.rela.plt)         }
  .rela.plt      : { *(.rela.plt)         }
  /* Internal text space.  */
 
  .text :
  .text :
  {
  {
    . = ALIGN(2);
    . = ALIGN(2);
    *(.init)
     KEEP(*(.init .init.*))
    *(.init0)  /* Start here after reset.  */
     KEEP(*(.init0))  /* Start here after reset.               */
    *(.init1)
     KEEP(*(.init1))  /* User definable.                       */
    *(.init2)  /* Copy data loop  */
     KEEP(*(.init2))  /* Initialize stack.                     */
    *(.init3)
     KEEP(*(.init3))  /* Initialize hardware, user definable.  */
    *(.init4)  /* Clear bss  */
     KEEP(*(.init4))  /* Copy data to .data, clear bss.        */
    *(.init5)
     KEEP(*(.init5))  /* User definable.                       */
    *(.init6)  /* C++ constructors.  */
     KEEP(*(.init6))  /* C++ constructors.                     */
    *(.init7)
     KEEP(*(.init7))  /* User definable.                       */
    *(.init8)
     KEEP(*(.init8))  /* User definable.                       */
    *(.init9)  /* Call main().  */
     KEEP(*(.init9))  /* Call main().                          */
 
     KEEP(*(.fini9))  /* Falls into here after main(). User definable.  */
 
     KEEP(*(.fini8))  /* User definable.                           */
 
     KEEP(*(.fini7))  /* User definable.                           */
 
     KEEP(*(.fini6))  /* C++ destructors.                          */
 
     KEEP(*(.fini5))  /* User definable.                           */
 
     KEEP(*(.fini4))  /* User definable.                           */
 
     KEEP(*(.fini3))  /* User definable.                           */
 
     KEEP(*(.fini2))  /* User definable.                           */
 
     KEEP(*(.fini1))  /* User definable.                           */
 
     KEEP(*(.fini0))  /* Infinite loop after program termination.  */
 
     KEEP(*(.fini .fini.*))
 
     . = ALIGN(2);
     __ctors_start = . ;
     __ctors_start = . ;
     *(.ctors)
     KEEP(*(.ctors))
     __ctors_end = . ;
     __ctors_end = . ;
     __dtors_start = . ;
     __dtors_start = . ;
     *(.dtors)
     KEEP(*(.dtors))
     __dtors_end = . ;
     __dtors_end = . ;
    . = ALIGN(2);
    . = ALIGN(2);
    *(.text)
    *(.text .text.* .gnu.linkonce.t.*)
    . = ALIGN(2);
 
    *(.text.*)
 
    . = ALIGN(2);
    . = ALIGN(2);
    *(.fini9)  /*   */
  }  > REGION_TEXT
    *(.fini8)
  .rodata   :
    *(.fini7)
 
    *(.fini6)  /* C++ destructors.  */
 
    *(.fini5)
 
    *(.fini4)
 
    *(.fini3)
 
    *(.fini2)
 
    *(.fini1)
 
    *(.fini0)  /* Infinite loop after program termination.  */
 
    *(.fini)
 
     _etext = . ;
 
  }  > text
 
  .data   : AT (ADDR (.text) + SIZEOF (.text))
 
  {
  {
     PROVIDE (__data_start = .) ;
 
    . = ALIGN(2);
    . = ALIGN(2);
    *(.data)
    *(.rodata .rodata.* .gnu.linkonce.r.*)
    . = ALIGN(2);
    . = ALIGN(2);
    *(.gnu.linkonce.d*)
  }  > REGION_TEXT
 
   _etext = .; /* Past last read-only (loadable) segment */
 
  .data   :
 
  {
    . = ALIGN(2);
    . = ALIGN(2);
     _edata = . ;
     PROVIDE (__data_start = .) ;
  }  > data
    *(.data .data.* .gnu.linkonce.d.*)
  .bss  SIZEOF(.data) + ADDR(.data) :
     . = ALIGN(2);
 
     _edata = . ;  /* Past last read-write (loadable) segment */
 
  }  > REGION_DATA AT > REGION_TEXT
 
   PROVIDE (__data_load_start = LOADADDR(.data) );
 
   PROVIDE (__data_size = SIZEOF(.data) );
 
  .bss   :
  {
  {
     PROVIDE (__bss_start = .) ;
     PROVIDE (__bss_start = .) ;
    *(.bss)
    *(.bss .bss.*)
    *(COMMON)
    *(COMMON)
 
     . = ALIGN(2);
     PROVIDE (__bss_end = .) ;
     PROVIDE (__bss_end = .) ;
     _end = . ;
  }  > REGION_DATA
  }  > data
   PROVIDE (__bss_size = SIZEOF(.bss) );
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
  .noinit   :
  {
  {
     PROVIDE (__noinit_start = .) ;
     PROVIDE (__noinit_start = .) ;
    *(.noinit)
    *(.noinit .noinit.*)
    *(COMMON)
     . = ALIGN(2);
     PROVIDE (__noinit_end = .) ;
     PROVIDE (__noinit_end = .) ;
     _end = . ;
  }  > REGION_DATA
  }  > data
   . = ALIGN(2);
 
   _end = . ;   /* Past last write (loadable) segment */
 
  .infomem   :
 
  {
 
    *(.infomem)
 
     . = ALIGN(2);
 
    *(.infomem.*)
 
  }  > infomem
 
  .infomemnobits   :
 
  {
 
    *(.infomemnobits)
 
     . = ALIGN(2);
 
    *(.infomemnobits.*)
 
  }  > infomem
 
  .infoa   :
 
  {
 
    *(.infoa .infoa.*)
 
  }  > infoa
 
  .infob   :
 
  {
 
    *(.infob .infob.*)
 
  }  > infob
 
  .infoc   :
 
  {
 
    *(.infoc .infoc.*)
 
  }  > infoc
 
  .infod   :
 
  {
 
    *(.infod .infod.*)
 
  }  > infod
  .vectors  :
  .vectors  :
  {
  {
     PROVIDE (__vectors_start = .) ;
     PROVIDE (__vectors_start = .) ;
    *(.vectors*)
    KEEP(*(.vectors*))
     _vectors_end = . ;
     _vectors_end = . ;
  }  > vectors
  }  > vectors
 
  .fartext :
 
  {
 
     . = ALIGN(2);
 
    *(.fartext)
 
     . = ALIGN(2);
 
    *(.fartext.*)
 
     _efartext = .;
 
  }  > REGION_FAR_ROM
 
  /* Stabs for profiling information*/
 
  .profiler 0 : { *(.profiler) }
  /* Stabs debugging sections.  */
  /* Stabs debugging sections.  */
  .stab 0 : { *(.stab) }
  .stab 0 : { *(.stab) }
  .stabstr 0 : { *(.stabstr) }
  .stabstr 0 : { *(.stabstr) }
  .stab.excl 0 : { *(.stab.excl) }
  .stab.excl 0 : { *(.stab.excl) }
  .stab.exclstr 0 : { *(.stab.exclstr) }
  .stab.exclstr 0 : { *(.stab.exclstr) }
  .stab.index 0 : { *(.stab.index) }
  .stab.index 0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment 0 : { *(.comment) }
  .comment 0 : { *(.comment) }
  /* DWARF debug sections.
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
 
  /* DWARF 3 */
 
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
 
  .debug_ranges   0 : { *(.debug_ranges) }
 
   PROVIDE (__stack = ORIGIN(ram) + LENGTH(ram));
  PROVIDE (__data_start_rom = _etext) ;
  PROVIDE (__data_start_rom = _etext) ;
  PROVIDE (__data_end_rom   = _etext + SIZEOF (.data)) ;
  PROVIDE (__data_end_rom   = _etext + SIZEOF (.data)) ;
  PROVIDE (__noinit_start_rom = _etext + SIZEOF (.data)) ;
 
  PROVIDE (__noinit_end_rom = _etext + SIZEOF (.data) + SIZEOF (.noinit)) ;
 
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.