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 145 and 178

Only display areas with differences | Details | Blame | View Log

Rev 145 Rev 178
/* Default linker script, for normal executables */
/* Default linker script, for normal executables */
OUTPUT_FORMAT("elf32-msp430")
OUTPUT_FORMAT("elf32-msp430")
OUTPUT_ARCH("msp430")
OUTPUT_ARCH("msp430")
MEMORY {
MEMORY
  sfr              : ORIGIN = 0x0000, LENGTH = 0x0010
{
  peripheral_8bit  : ORIGIN = 0x0010, LENGTH = 0x00f0
  data    (rwx)         : ORIGIN = 0x0200,      LENGTH = 0x0080
  peripheral_16bit : ORIGIN = 0x0100, LENGTH = 0x0100
  text    (rx)          : ORIGIN = 0xf800,      LENGTH = 0x0800-0x20
 
  vectors (rw)          : ORIGIN = 0xffe0,      LENGTH = 0x20
  ram (wx)         : ORIGIN = 0x0200, LENGTH = 128
}
  rom (rx)         : ORIGIN = 0xf800, LENGTH = 2048-32
REGION_ALIAS("REGION_TEXT", text);
 
REGION_ALIAS("REGION_DATA", data);
  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;
__MPY    = 0x0130;
__MPYS   = 0x0132;
__MPYS   = 0x0132;
__MAC    = 0x0134;
__MAC    = 0x0134;
__MACS   = 0x0136;
__MACS   = 0x0136;
__OP2    = 0x0138;
__OP2    = 0x0138;
__RESLO  = 0x013A;
__RESLO  = 0x013A;
__RESHI  = 0x013C;
__RESHI  = 0x013C;
__SUMEXT = 0x013E;
__SUMEXT = 0x013E;
SECTIONS
SECTIONS
{
{
  /* 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.text      : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)        }
  .rel.rodata    :
  .rela.text     : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)     }
    {
  .rel.rodata    : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)    }
      *(.rel.rodata)
  .rela.rodata   : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
      *(.rel.rodata.*)
  .rel.data      : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)        }
      *(.rel.gnu.linkonce.r*)
  .rela.data     : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)     }
    }
  .rel.bss       : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)          }
  .rela.rodata   :
  .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);
     KEEP(*(.init .init.*))
    *(.init)
     KEEP(*(.init0))  /* Start here after reset.               */
    *(.init0)  /* Start here after reset.  */
     KEEP(*(.init1))  /* User definable.                       */
    *(.init1)
     KEEP(*(.init2))  /* Initialize stack.                     */
    *(.init2)  /* Copy data loop  */
     KEEP(*(.init3))  /* Initialize hardware, user definable.  */
    *(.init3)
     KEEP(*(.init4))  /* Copy data to .data, clear bss.        */
    *(.init4)  /* Clear bss  */
     KEEP(*(.init5))  /* User definable.                       */
    *(.init5)
     KEEP(*(.init6))  /* C++ constructors.                     */
    *(.init6)  /* C++ constructors.  */
     KEEP(*(.init7))  /* User definable.                       */
    *(.init7)
     KEEP(*(.init8))  /* User definable.                       */
    *(.init8)
     KEEP(*(.init9))  /* Call main().                          */
    *(.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 = . ;
     KEEP(*(.ctors))
     *(.ctors)
     __ctors_end = . ;
     __ctors_end = . ;
     __dtors_start = . ;
     __dtors_start = . ;
     KEEP(*(.dtors))
     *(.dtors)
     __dtors_end = . ;
     __dtors_end = . ;
     . = ALIGN(2);
     . = ALIGN(2);
    *(.text .text.* .gnu.linkonce.t.*)
    *(.text)
 
    . = ALIGN(2);
 
    *(.text.*)
     . = ALIGN(2);
     . = ALIGN(2);
  }  > REGION_TEXT
    *(.fini9)  /*   */
 
    *(.fini8)
 
    *(.fini7)
 
    *(.fini6)  /* C++ destructors.  */
 
    *(.fini5)
 
    *(.fini4)
 
    *(.fini3)
 
    *(.fini2)
 
    *(.fini1)
 
    *(.fini0)  /* Infinite loop after program termination.  */
 
    *(.fini)
 
  }  > text
  .rodata   :
  .rodata   :
  {
  {
     . = ALIGN(2);
     . = ALIGN(2);
    *(.rodata .rodata.* .gnu.linkonce.r.*)
    *(.rodata .rodata.* .gnu.linkonce.r.*)
     . = ALIGN(2);
     . = ALIGN(2);
  }  > REGION_TEXT
  }  > text
   _etext = .; /* Past last read-only (loadable) segment */
   _etext = .; /* Past last read-only (loadable) segment */
  .data   :
  .data   : AT (ADDR (.text) + SIZEOF (.text) + SIZEOF (.rodata) )
  {
  {
     . = ALIGN(2);
 
     PROVIDE (__data_start = .) ;
     PROVIDE (__data_start = .) ;
    *(.data .data.* .gnu.linkonce.d.*)
 
     . = ALIGN(2);
     . = ALIGN(2);
     _edata = . ;  /* Past last read-write (loadable) segment */
    *(.data)
  }  > REGION_DATA AT > REGION_TEXT
    . = ALIGN(2);
 
    *(.gnu.linkonce.d*)
 
    . = ALIGN(2);
 
     _edata = . ;
 
  }  > data
   PROVIDE (__data_load_start = LOADADDR(.data) );
   PROVIDE (__data_load_start = LOADADDR(.data) );
   PROVIDE (__data_size = SIZEOF(.data) );
   PROVIDE (__data_size = SIZEOF(.data) );
  .bss   :
  .bss  SIZEOF(.data) + ADDR(.data) :
  {
  {
     PROVIDE (__bss_start = .) ;
     PROVIDE (__bss_start = .) ;
    *(.bss .bss.*)
    *(.bss)
    *(COMMON)
    *(COMMON)
     . = ALIGN(2);
 
     PROVIDE (__bss_end = .) ;
     PROVIDE (__bss_end = .) ;
  }  > REGION_DATA
     _end = . ;
 
  }  > data
   PROVIDE (__bss_size = SIZEOF(.bss) );
   PROVIDE (__bss_size = SIZEOF(.bss) );
  .noinit   :
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
  {
  {
     PROVIDE (__noinit_start = .) ;
     PROVIDE (__noinit_start = .) ;
    *(.noinit .noinit.*)
    *(.noinit)
     . = ALIGN(2);
    *(COMMON)
     PROVIDE (__noinit_end = .) ;
     PROVIDE (__noinit_end = .) ;
  }  > REGION_DATA
     _end = . ;
   . = ALIGN(2);
  }  > data
   _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 = .) ;
    KEEP(*(.vectors*))
    *(.vectors*)
     _vectors_end = . ;
     _vectors_end = . ;
  }  > vectors
  }  > vectors
  .fartext :
 
  {
 
     . = ALIGN(2);
 
    *(.fartext)
 
     . = ALIGN(2);
 
    *(.fartext.*)
 
     _efartext = .;
 
  }  > REGION_FAR_ROM
 
  /* Stabs for profiling information*/
  /* Stabs for profiling information*/
  .profiler 0 : { *(.profiler) }
  .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 */
  PROVIDE (__stack = ORIGIN(data) + LENGTH(data));
  .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)) ;
}
}
 
 

powered by: WebSVN 2.1.0

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