linker.cfg revision 157873
155839Sasmodai/*******************************************************************************
255839Sasmodai *
355839Sasmodai * Filename: linker.cfg
455839Sasmodai *
555839Sasmodai * linker config file used for internal RAM or eeprom images at address 0.
655839Sasmodai *
755839Sasmodai * Revision information:
855839Sasmodai *
955839Sasmodai * 20AUG2004	kb_admin	initial creation
1055839Sasmodai * 12JAN2005	kb_admin	move data to SDRAM
1155839Sasmodai *
1255839Sasmodai * BEGIN_KBDD_BLOCK
1355839Sasmodai * No warranty, expressed or implied, is included with this software.  It is
1455839Sasmodai * provided "AS IS" and no warranty of any kind including statutory or aspects
1555839Sasmodai * relating to merchantability or fitness for any purpose is provided.  All
1655839Sasmodai * intellectual property rights of others is maintained with the respective
1755839Sasmodai * owners.  This software is not copyrighted and is intended for reference
1855839Sasmodai * only.
1955839Sasmodai * END_BLOCK
2055839Sasmodai *
2155839Sasmodai * $FreeBSD: head/sys/boot/arm/at91/linker.cfg 157873 2006-04-19 17:16:49Z imp $
2255839Sasmodai ******************************************************************************/
2355839SasmodaiOUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
2455839Sasmodai	      "elf32-littlearm")
2555839SasmodaiOUTPUT_ARCH(arm)
2655839SasmodaiENTRY(start)
2755839Sasmodai SEARCH_DIR(/usr/local/arm/2.95.3/arm-linux/lib);
2855839Sasmodai/* Do we need any of these for elf?
2955839Sasmodai   __DYNAMIC = 0;    */
3055839SasmodaiSECTIONS
3155839Sasmodai{
3255839Sasmodai  /* Read-only sections, merged into text segment: */
3355839Sasmodai  . = 0;
3455839Sasmodai  .text      :
3555839Sasmodai  {
3655839Sasmodai    *(.text)
3755839Sasmodai    *(.text.*)
3855839Sasmodai    *(.stub)
3955839Sasmodai    /* .gnu.warning sections are handled specially by elf32.em.  */
4055839Sasmodai    *(.gnu.warning)
4155839Sasmodai    *(.gnu.linkonce.t.*)
4255839Sasmodai    *(.glue_7t) *(.glue_7)
4355839Sasmodai  }
4455839Sasmodai  .interp     : { *(.interp) 	}
4555839Sasmodai  .hash          : { *(.hash)		}
4655839Sasmodai  .dynsym        : { *(.dynsym)		}
4755839Sasmodai  .dynstr        : { *(.dynstr)		}
4855839Sasmodai  .gnu.version   : { *(.gnu.version)	}
4955839Sasmodai  .gnu.version_d   : { *(.gnu.version_d)	}
5055839Sasmodai  .gnu.version_r   : { *(.gnu.version_r)	}
5155839Sasmodai  .rel.init      : { *(.rel.init)	}
5255839Sasmodai  .rela.init     : { *(.rela.init)	}
5355839Sasmodai  .rel.text      :
5455839Sasmodai    {
5555839Sasmodai      *(.rel.text)
5655839Sasmodai      *(.rel.text.*)
5755839Sasmodai      *(.rel.gnu.linkonce.t.*)
5855839Sasmodai    }
5955839Sasmodai  .rela.text     :
6055839Sasmodai    {
6155839Sasmodai      *(.rela.text)
6255839Sasmodai      *(.rela.text.*)
6355839Sasmodai      *(.rela.gnu.linkonce.t.*)
6455839Sasmodai    }
6555839Sasmodai  .rel.fini      : { *(.rel.fini)	}
6655839Sasmodai  .rela.fini     : { *(.rela.fini)	}
6755839Sasmodai  .rel.rodata    :
6855839Sasmodai    {
6955839Sasmodai      *(.rel.rodata)
7055839Sasmodai      *(.rel.rodata.*)
7155839Sasmodai      *(.rel.gnu.linkonce.r.*)
7255839Sasmodai    }
7355839Sasmodai  .rela.rodata   :
7455839Sasmodai    {
7555839Sasmodai      *(.rela.rodata)
7655839Sasmodai      *(.rela.rodata.*)
7755839Sasmodai      *(.rela.gnu.linkonce.r.*)
7855839Sasmodai    }
7955839Sasmodai  .rel.data      :
8055839Sasmodai    {
8155839Sasmodai      *(.rel.data)
8255839Sasmodai      *(.rel.data.*)
8355839Sasmodai      *(.rel.gnu.linkonce.d.*)
8455839Sasmodai    }
8555839Sasmodai  .rela.data     :
8655839Sasmodai    {
8755839Sasmodai      *(.rela.data)
8855839Sasmodai      *(.rela.data.*)
8955839Sasmodai      *(.rela.gnu.linkonce.d.*)
9055839Sasmodai    }
9155839Sasmodai  .rel.ctors     : { *(.rel.ctors)	}
9255839Sasmodai  .rela.ctors    : { *(.rela.ctors)	}
9355839Sasmodai  .rel.dtors     : { *(.rel.dtors)	}
9455839Sasmodai  .rela.dtors    : { *(.rela.dtors)	}
9555839Sasmodai  .rel.got       : { *(.rel.got)		}
9655839Sasmodai  .rela.got      : { *(.rela.got)		}
9755839Sasmodai  .rel.sdata     :
9855839Sasmodai    {
9955839Sasmodai      *(.rel.sdata)
10055839Sasmodai      *(.rel.sdata.*)
10155839Sasmodai      *(.rel.gnu.linkonce.s.*)
10255839Sasmodai    }
10355839Sasmodai  .rela.sdata     :
10455839Sasmodai    {
10555839Sasmodai      *(.rela.sdata)
10655839Sasmodai      *(.rela.sdata.*)
10755839Sasmodai      *(.rela.gnu.linkonce.s.*)
10855839Sasmodai    }
10955839Sasmodai  .rel.sbss      :
11055839Sasmodai    { 
11155839Sasmodai      *(.rel.sbss)
11255839Sasmodai      *(.rel.sbss.*)
11355839Sasmodai      *(.rel.gnu.linkonce.sb.*)
11455839Sasmodai    }
11555839Sasmodai  .rela.sbss     :
11655839Sasmodai    {
11755839Sasmodai      *(.rela.sbss)
11855839Sasmodai      *(.rela.sbss.*)
11955839Sasmodai      *(.rel.gnu.linkonce.sb.*)
12055839Sasmodai    }
12155839Sasmodai  .rel.sdata2    : 
12255839Sasmodai    { 
12355839Sasmodai      *(.rel.sdata2)
12455839Sasmodai      *(.rel.sdata2.*)
12555839Sasmodai      *(.rel.gnu.linkonce.s2.*)
12655839Sasmodai    }
12755839Sasmodai  .rela.sdata2   : 
12855839Sasmodai    {
12955839Sasmodai      *(.rela.sdata2)
13055839Sasmodai      *(.rela.sdata2.*)
13155839Sasmodai      *(.rela.gnu.linkonce.s2.*)
13255839Sasmodai    }
13355839Sasmodai  .rel.sbss2     : 
13455839Sasmodai    { 
13555839Sasmodai      *(.rel.sbss2)	
13655839Sasmodai      *(.rel.sbss2.*)
13755839Sasmodai      *(.rel.gnu.linkonce.sb2.*)
13855839Sasmodai    }
13955839Sasmodai  .rela.sbss2    : 
14055839Sasmodai    { 
14155839Sasmodai      *(.rela.sbss2)	
14255839Sasmodai      *(.rela.sbss2.*)
14355839Sasmodai      *(.rela.gnu.linkonce.sb2.*)
14455839Sasmodai    }
14555839Sasmodai  .rel.bss       : 
14655839Sasmodai    { 
14755839Sasmodai      *(.rel.bss)
14855839Sasmodai      *(.rel.bss.*)
14955839Sasmodai      *(.rel.gnu.linkonce.b.*)
15055839Sasmodai    }
15155839Sasmodai  .rela.bss      : 
15255839Sasmodai    { 
15355839Sasmodai      *(.rela.bss)
15455839Sasmodai      *(.rela.bss.*)
15555839Sasmodai      *(.rela.gnu.linkonce.b.*)
15655839Sasmodai    }
15755839Sasmodai  .rel.plt       : { *(.rel.plt)		}
15855839Sasmodai  .rela.plt      : { *(.rela.plt)		}
15955839Sasmodai  .init          : 
16055839Sasmodai  { 
16155839Sasmodai    KEEP (*(.init))
16255839Sasmodai  } =0
16355839Sasmodai  .plt      : { *(.plt)	}
16455839Sasmodai  .fini      :
16555839Sasmodai  {
16655839Sasmodai    KEEP (*(.fini))
16755839Sasmodai  } =0
16855839Sasmodai  PROVIDE (__etext = .);
16955839Sasmodai  PROVIDE (_etext = .);
17055839Sasmodai  PROVIDE (etext = .);
17155839Sasmodai  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
17255839Sasmodai  .rodata1   : { *(.rodata1) }
17355839Sasmodai  .sdata2   : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) }
17455839Sasmodai  .sbss2   : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
17555839Sasmodai  .data    :
17655839Sasmodai  {
17755839Sasmodai    __data_start = . ;
17855839Sasmodai    *(.data)
17955839Sasmodai    *(.data.*)
18055839Sasmodai    *(.gnu.linkonce.d.*)
18155839Sasmodai    SORT(CONSTRUCTORS)
18255839Sasmodai  }
18355839Sasmodai  .data1   : { *(.data1) }
18455839Sasmodai  . = 0x21200000;
18555839Sasmodai  .eh_frame : { KEEP (*(.eh_frame)) }
18655839Sasmodai  .gcc_except_table : { *(.gcc_except_table) }
18755839Sasmodai  .ctors   : 
18855839Sasmodai  {
18955839Sasmodai    /* gcc uses crtbegin.o to find the start of
19055839Sasmodai       the constructors, so we make sure it is
19155839Sasmodai       first.  Because this is a wildcard, it
19255839Sasmodai       doesn't matter if the user does not
19355839Sasmodai       actually link against crtbegin.o; the
19455839Sasmodai       linker won't look for a file to match a
19555839Sasmodai       wildcard.  The wildcard also means that it
19655839Sasmodai       doesn't matter which directory crtbegin.o
19755839Sasmodai       is in.  */
19855839Sasmodai    KEEP (*crtbegin.o(.ctors))
19955839Sasmodai    /* We don't want to include the .ctor section from
20055839Sasmodai       from the crtend.o file until after the sorted ctors.
20155839Sasmodai       The .ctor section from the crtend file contains the
20255839Sasmodai       end of ctors marker and it must be last */
20355839Sasmodai    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
20455839Sasmodai    KEEP (*(SORT(.ctors.*)))
20555839Sasmodai    KEEP (*(.ctors))
20655839Sasmodai  }
20755839Sasmodai   .dtors         :
20855839Sasmodai  {
20955839Sasmodai    KEEP (*crtbegin.o(.dtors))
21055839Sasmodai    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
21155839Sasmodai    KEEP (*(SORT(.dtors.*)))
21255839Sasmodai    KEEP (*(.dtors))
21355839Sasmodai  }
21455839Sasmodai  .got		  : { *(.got.plt) *(.got) }
21555839Sasmodai  .dynamic       : { *(.dynamic) }
21655839Sasmodai  /* We want the small data sections together, so single-instruction offsets
21755839Sasmodai     can access them all, and initialized data all before uninitialized, so
21855839Sasmodai     we can shorten the on-disk segment size.  */
21955839Sasmodai  .sdata     : 
22055839Sasmodai  {
22155839Sasmodai    *(.sdata) 
22255839Sasmodai    *(.sdata.*)
22355839Sasmodai    *(.gnu.linkonce.s.*)
22455839Sasmodai  }
22555839Sasmodai  _edata = .;
22655839Sasmodai  PROVIDE (edata = .);
22755839Sasmodai  __bss_start = .;
22855839Sasmodai  __bss_start__ = .;
22955839Sasmodai  .sbss      :
23055839Sasmodai  {
23155839Sasmodai    PROVIDE (__sbss_start = .);
23255839Sasmodai    PROVIDE (___sbss_start = .);
23355839Sasmodai    *(.dynsbss)
23455839Sasmodai    *(.sbss)
23555839Sasmodai    *(.sbss.*)
23655839Sasmodai    *(.gnu.linkonce.sb.*)
23755839Sasmodai    *(.scommon)
23855839Sasmodai    PROVIDE (__sbss_end = .);
23955839Sasmodai    PROVIDE (___sbss_end = .);
24055839Sasmodai  }
24155839Sasmodai  .bss       :
24255839Sasmodai  {
24355839Sasmodai   *(.dynbss)
24455839Sasmodai   *(.bss)
24555839Sasmodai   *(.bss.*)
24655839Sasmodai   *(.gnu.linkonce.b.*)
24755839Sasmodai   *(COMMON)
24855839Sasmodai   /* Align here to ensure that the .bss section occupies space up to
24955839Sasmodai      _end.  Align after .bss to ensure correct alignment even if the
25055839Sasmodai      .bss section disappears because there are no input sections.  */
25155839Sasmodai   . = ALIGN(32 / 8);
25255839Sasmodai  }
25355839Sasmodai  . = ALIGN(32 / 8);
25455839Sasmodai  _end = .;
25555839Sasmodai  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
25655839Sasmodai  PROVIDE (end = .);
25755839Sasmodai  /* Stabs debugging sections.  */
25855839Sasmodai  .stab 0 : { *(.stab) }
25955839Sasmodai  .stabstr 0 : { *(.stabstr) }
26055839Sasmodai  .stab.excl 0 : { *(.stab.excl) }
26155839Sasmodai  .stab.exclstr 0 : { *(.stab.exclstr) }
26255839Sasmodai  .stab.index 0 : { *(.stab.index) }
26355839Sasmodai  .stab.indexstr 0 : { *(.stab.indexstr) }
26455839Sasmodai  .comment 0 : { *(.comment) }
26555839Sasmodai  /* DWARF debug sections.
26655839Sasmodai     Symbols in the DWARF debugging sections are relative to the beginning
26755839Sasmodai     of the section so we begin them at 0.  */
26855839Sasmodai  /* DWARF 1 */
26955839Sasmodai  .debug          0 : { *(.debug) }
27055839Sasmodai  .line           0 : { *(.line) }
27155839Sasmodai  /* GNU DWARF 1 extensions */
27255839Sasmodai  .debug_srcinfo  0 : { *(.debug_srcinfo) }
27355839Sasmodai  .debug_sfnames  0 : { *(.debug_sfnames) }
27455839Sasmodai  /* DWARF 1.1 and DWARF 2 */
27555839Sasmodai  .debug_aranges  0 : { *(.debug_aranges) }
27655839Sasmodai  .debug_pubnames 0 : { *(.debug_pubnames) }
27755839Sasmodai  /* DWARF 2 */
27855839Sasmodai  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
27955839Sasmodai  .debug_abbrev   0 : { *(.debug_abbrev) }
28055839Sasmodai  .debug_line     0 : { *(.debug_line) }
28155839Sasmodai  .debug_frame    0 : { *(.debug_frame) }
28255839Sasmodai  .debug_str      0 : { *(.debug_str) }
28355839Sasmodai  .debug_loc      0 : { *(.debug_loc) }
28455839Sasmodai  .debug_macinfo  0 : { *(.debug_macinfo) }
28555839Sasmodai  /* SGI/MIPS DWARF 2 extensions */
28655839Sasmodai  .debug_weaknames 0 : { *(.debug_weaknames) }
28755839Sasmodai  .debug_funcnames 0 : { *(.debug_funcnames) }
28855839Sasmodai  .debug_typenames 0 : { *(.debug_typenames) }
28955839Sasmodai  .debug_varnames  0 : { *(.debug_varnames) }
29055839Sasmodai  /* These must appear regardless of  .  */
29155839Sasmodai}
29255839Sasmodai