Back to home page

LXR

 
 

    


Warning, /bsps/powerpc/shared/start/linkcmds.share is written in an unsupported language. File is not indexed.

0001 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
0002               "elf32-powerpc")
0003 OUTPUT_ARCH(powerpc)
0004 
0005 /* Do we need any of these for elf?
0006    __DYNAMIC = 0;    */
0007 MEMORY {
0008         VECTORS : ORIGIN = 0x0 ,  LENGTH = 0x3000
0009         CODE : ORIGIN = 0x3000 , LENGTH = 32M - 0x3000
0010 }
0011 
0012 /*
0013  * The upper layer linker command file may optionally define the symbol
0014  * bsp_section_small_data_area_size.  By default, the small data area is
0015  * defined by the .sdata and .sbss input sections.  Define
0016  * bsp_section_small_data_area_size, if you want to make space available for
0017  * dynamically loaded libraries (libdl).  Small memory targets which do not use
0018  * libdl, should not define this symbol.
0019  */
0020 
0021 SECTIONS
0022 {
0023   .entry_point_section :
0024   {
0025         KEEP(*(.entry_point_section))
0026   } > VECTORS
0027 
0028   /*
0029    * This section is used only if NO_DYNAMIC_EXCEPTION_VECTOR_INSTALL
0030    * is defined in vectors/vectors.S
0031    */
0032   .vectors :
0033   {
0034     *(.vectors)
0035   } > VECTORS
0036 
0037   /* Read-only sections, merged into text segment: */
0038   .interp   : { *(.interp) }    > CODE
0039   .hash           : { *(.hash)          }       > CODE
0040   .dynsym         : { *(.dynsym)                }       > CODE
0041   .dynstr         : { *(.dynstr)                }       > CODE
0042   .gnu.version   : { *(.gnu.version)      }     > CODE
0043   .gnu.version_d   : { *(.gnu.version_d)  }     > CODE
0044   .gnu.version_r   : { *(.gnu.version_r)  }     > CODE
0045   .rela.text     :
0046     { *(.rela.text) *(.rela.gnu.linkonce.t*) }  > CODE
0047   .rela.data     :
0048     { *(.rela.data) *(.rela.gnu.linkonce.d*) }  > CODE
0049   .rela.rodata   :
0050     { *(.rela.rodata*) *(.rela.gnu.linkonce.r*) }       > CODE
0051   .rela.got       : { *(.rela.got)      }       > CODE
0052   .rela.got1      : { *(.rela.got1)     }       > CODE
0053   .rela.got2      : { *(.rela.got2)     }       > CODE
0054   .rela.ctors     : { *(.rela.ctors)    }       > CODE
0055   .rela.dtors     : { *(.rela.dtors)    }       > CODE
0056   .rela.init      : { *(.rela.init)     }       > CODE
0057   .rela.fini      : { *(.rela.fini)     }       > CODE
0058   .rela.bss       : { *(.rela.bss)      }       > CODE
0059   .rela.plt       : { *(.rela.plt)      }       > CODE
0060   .rela.sdata     : { *(.rela.sdata)    }       > CODE
0061   .rela.sbss      : { *(.rela.sbss)     }       > CODE
0062   .rela.sdata2    : { *(.rela.sdata2)   }       > CODE
0063   .rela.sbss2     : { *(.rela.sbss2)    }       > CODE
0064   .rela.dyn       : { *(.rela.dyn)      }       > CODE
0065 
0066   .init           : { KEEP(*(.init))            } > CODE
0067 
0068   .text      :  
0069   {
0070     *(.text*)   
0071 
0072     /*
0073      * Special FreeBSD sysctl sections.
0074      */
0075     . = ALIGN (16);
0076     __start_set_sysctl_set = .;
0077     *(set_sysctl_*);
0078     __stop_set_sysctl_set = ABSOLUTE(.);
0079     *(set_domain_*);
0080     *(set_pseudo_*);
0081 
0082     /* .gnu.warning sections are handled specially by elf32.em.  */
0083     *(.gnu.warning)
0084     *(.gnu.linkonce.t*)
0085   }  > CODE
0086 
0087   .fini           : { _fini = .; KEEP(*(.fini)) } > CODE
0088 
0089   .rodata         : { *(.rodata*) KEEP (*(SORT(.rtemsroset.*))) *(.gnu.linkonce.r*) }   > CODE
0090   .rodata1        : { *(.rodata1) }     > CODE
0091 
0092   .tdata : {
0093     _TLS_Data_begin = .;
0094     *(.tdata .tdata.* .gnu.linkonce.td.*)
0095     _TLS_Data_end = .;
0096   } >CODE
0097 
0098   .tbss : {
0099     _TLS_BSS_begin = .;
0100     *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0101     _TLS_BSS_end = .;
0102   } >CODE
0103 
0104   _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0105   _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0106   _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0107   _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0108   _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0109   _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0110 
0111   /* Adjust the address for the data segment.  We want to adjust up to
0112      the same address within the page on the next page up.  */
0113   . = ALIGN(0x10000) + (. & (0x10000 - 1));
0114   /* Ensure the __preinit_array_start label is properly aligned.  We
0115      could instead move the label definition inside the section, but
0116      the linker would then create the section even if it turns out to
0117      be empty, which isn't pretty.  */
0118   . = ALIGN(32 / 8);
0119   PROVIDE (__preinit_array_start = .);
0120   .preinit_array     : { *(.preinit_array) } >CODE
0121   PROVIDE (__preinit_array_end = .);
0122   PROVIDE (__init_array_start = .);
0123   .init_array     : { *(.init_array) } >CODE
0124   PROVIDE (__init_array_end = .);
0125   PROVIDE (__fini_array_start = .);
0126   .fini_array     : { *(.fini_array) } >CODE
0127   PROVIDE (__fini_array_end = .);
0128 
0129   .sdata2         : {PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } >CODE
0130   .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) 
0131                         /* avoid empty sdata2/sbss2 area -- __eabi would not set up r2
0132                          * which may be important if run-time loading is used
0133                          */
0134                      . += 1;
0135                      PROVIDE (__SBSS2_END__ = .);
0136                     } >CODE
0137   .eh_frame_hdr   : { *(.eh_frame_hdr)                  } >CODE
0138   .eh_frame       : { KEEP (*(.eh_frame))               } >CODE
0139 
0140   /* NOTE: if the BSP uses page tables, the correctness of
0141    *       '_etext' (and __DATA_START__) is CRUCIAL - otherwise,
0142    *       an invalid mapping may result!!!
0143    */
0144   _etext = .;
0145   PROVIDE (etext = .);
0146 
0147   /* Adjust the address for the data segment.  We want to adjust up to
0148      the same address within the page on the next page up.  It would
0149      be more correct to do this:
0150        . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1));
0151      The current expression does not correctly handle the case of a
0152      text segment ending precisely at the end of a page; it causes the
0153      data segment to skip a page.  The above expression does not have
0154      this problem, but it will currently (2/95) cause BFD to allocate
0155      a single segment, combining both text and data, for this case.
0156      This will prevent the text segment from being shared among
0157      multiple executions of the program; I think that is more
0158      important than losing a page of the virtual address space (note
0159      that no actual memory is lost; the page which is skipped can not
0160      be referenced).  */
0161   . = ALIGN(0x1000);
0162  .data ALIGN(0x1000) :
0163   {
0164    /* NOTE: if the BSP uses page tables, the correctness of
0165     *       '__DATA_START__' (and _etext) is CRUCIAL - otherwise,
0166     *       an invalid mapping may result!!!
0167     */
0168         PROVIDE(__DATA_START__ = ABSOLUTE(.) );
0169     *(.data .data.* .gnu.linkonce.d*)   
0170     KEEP (*(SORT(.rtemsrwset.*)))
0171     SORT(CONSTRUCTORS)
0172   } > CODE
0173   .data1   : { *(.data1) }      > CODE
0174   PROVIDE (__EXCEPT_START__ = .);
0175   .gcc_except_table   : { *(.gcc_except_table .gcc_except_table.*) } > CODE
0176   PROVIDE (__EXCEPT_END__ = .);
0177   .got1           : { *(.got1) }        > CODE
0178   /* Put .ctors and .dtors next to the .got2 section, so that the pointers
0179      get relocated with -mrelocatable. Also put in the .fixup pointers.
0180      The current compiler no longer needs this, but keep it around for 2.7.2  */
0181                 PROVIDE (_GOT2_START_ = .);
0182   .got2           :  { *(.got2) }       > CODE
0183   .dynamic        : { *(.dynamic) }     > CODE
0184 
0185   .ctors          : {
0186     KEEP (*ecrti.o(.ctors))
0187     KEEP (*crtbegin.o(.ctors))
0188     KEEP (*crtbegin?.o(.ctors))
0189     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .ctors))
0190     KEEP (*(SORT(.ctors.*)))
0191     KEEP (*(.ctors))
0192   } > CODE
0193   .dtors          : {
0194     KEEP (*ecrti.o(.dtors))
0195     KEEP (*crtbegin.o(.dtors))
0196     KEEP (*crtbegin?.o(.dtors))
0197     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .dtors))
0198     KEEP (*(SORT(.dtors.*)))
0199     KEEP (*(.dtors))
0200   } > CODE
0201 
0202 
0203                 PROVIDE (_FIXUP_START_ = .);
0204   .fixup          : { *(.fixup) }       > CODE
0205                 PROVIDE (_FIXUP_END_ = .);
0206                 PROVIDE (_GOT2_END_ = .);
0207                 PROVIDE (_GOT_START_ = .);
0208 
0209   .got            : { *(.got) } > CODE
0210   .got.plt        : { *(.got.plt) }     > CODE
0211 
0212                 PROVIDE (_GOT_END_ = .);
0213 
0214   .jcr            : { KEEP (*(.jcr)) } > CODE
0215 
0216   /* We want the small data sections together, so single-instruction offsets
0217      can access them all, and initialized data all before uninitialized, so
0218      we can shorten the on-disk segment size.  */
0219   .sdata : {
0220     bsp_section_sdata_begin = .;
0221     PROVIDE (_SDA_BASE_ = 32768);
0222     *(.sdata*) *(.gnu.linkonce.s.*)
0223     bsp_section_sdata_end = .;
0224   } > CODE
0225   _edata  =  .;
0226   PROVIDE (edata = .);
0227   .sbss      :
0228   {
0229     bsp_section_sbss_begin = .;
0230     PROVIDE (__sbss_start = .);
0231     *(.dynsbss)
0232     *(.sbss* .gnu.linkonce.sb.*)
0233     *(.scommon)
0234     /* avoid empty sdata/sbss area -- __eabi would not set up r13
0235      * which may be important if run-time loading is used
0236      */
0237     . += 1;
0238     PROVIDE (__SBSS_END__ = .);
0239     PROVIDE (__sbss_end = .);
0240     bsp_section_sbss_end = .;
0241     bsp_section_sdata_libdl_begin = .;
0242      . = DEFINED(bsp_section_small_data_area_size) ?
0243          bsp_section_sdata_begin + bsp_section_small_data_area_size : .;
0244     bsp_section_sdata_libdl_end = .;
0245   } > CODE
0246   .plt   : { *(.plt) }  > CODE
0247   .bss       :
0248   {
0249    PROVIDE (__bss_start = .);
0250    *(.dynbss)
0251    *(.bss .bss* .gnu.linkonce.b*)
0252    *(COMMON)
0253   . = ALIGN(16);
0254    PROVIDE (__bss_end = .);
0255   } > CODE
0256   .noinit (NOLOAD) : {
0257     *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0258   } > CODE
0259   .rtemsstack (NOLOAD) : {
0260     *(SORT(.rtemsstack.*))
0261   } >CODE
0262   . = ALIGN(16);
0263   _end = . ;
0264   __rtems_end = . ;
0265   PROVIDE (end = .);
0266   /DISCARD/ : 
0267   {
0268     *(.comment)
0269   }
0270 
0271 
0272   /* Stabs debugging sections.  */
0273   .stab 0 : { *(.stab) }
0274   .stabstr 0 : { *(.stabstr) }
0275   .stab.excl 0 : { *(.stab.excl) }
0276   .stab.exclstr 0 : { *(.stab.exclstr) }
0277   .stab.index 0 : { *(.stab.index) }
0278   .stab.indexstr 0 : { *(.stab.indexstr) }
0279   .comment 0 : { *(.comment) }
0280 
0281   /* DWARF debug sections.
0282      Symbols in the DWARF debugging sections are relative to the beginning
0283      of the section so we begin them at 0.  */
0284   /* DWARF 1 */
0285   .debug          0 : { *(.debug) }
0286   .line           0 : { *(.line) }
0287   
0288   /* GNU DWARF 1 extensions */
0289   .debug_srcinfo  0 : { *(.debug_srcinfo) }
0290   .debug_sfnames  0 : { *(.debug_sfnames) }
0291   
0292   /* DWARF 1.1 and DWARF 2 */
0293   .debug_aranges  0 : { *(.debug_aranges) }
0294   .debug_pubnames 0 : { *(.debug_pubnames) }
0295   
0296   /* DWARF 2 */
0297   .debug_info     0 : { *(.debug_info) }
0298   .debug_abbrev   0 : { *(.debug_abbrev) }
0299   .debug_line     0 : { *(.debug_line) }
0300   .debug_frame    0 : { *(.debug_frame) }
0301   .debug_str      0 : { *(.debug_str) }
0302   .debug_loc      0 : { *(.debug_loc) }
0303   .debug_macinfo  0 : { *(.debug_macinfo) }
0304   
0305   /* SGI/MIPS DWARF 2 extensions */
0306   .debug_weaknames 0 : { *(.debug_weaknames) }
0307   .debug_funcnames 0 : { *(.debug_funcnames) }
0308   .debug_typenames 0 : { *(.debug_typenames) }
0309   .debug_varnames  0 : { *(.debug_varnames) }
0310   /* These must appear regardless of  .  */
0311 }