Home | History | Annotate | Line # | Download | only in common
boot.ldscript revision 1.2.6.2
      1  1.2.6.2  yamt /* Script for -N: mix text and data on same page; don't align data */
      2  1.2.6.2  yamt OUTPUT_ARCH(mips)
      3  1.2.6.2  yamt ENTRY(__start)
      4  1.2.6.2  yamt SEARCH_DIR("=/usr/lib");
      5  1.2.6.2  yamt SECTIONS
      6  1.2.6.2  yamt {
      7  1.2.6.2  yamt   /* Read-only sections, merged into text segment: */
      8  1.2.6.2  yamt   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x20000000)); . = SEGMENT_START("text-segment", 0x20000000) + SIZEOF_HEADERS;
      9  1.2.6.2  yamt   .interp         : { *(.interp) }
     10  1.2.6.2  yamt   .reginfo        : { *(.reginfo) }
     11  1.2.6.2  yamt   .note.gnu.build-id : { *(.note.gnu.build-id) }
     12  1.2.6.2  yamt   .dynamic        : { *(.dynamic) }
     13  1.2.6.2  yamt   .hash           : { *(.hash) }
     14  1.2.6.2  yamt   .gnu.hash       : { *(.gnu.hash) }
     15  1.2.6.2  yamt   .dynsym         : { *(.dynsym) }
     16  1.2.6.2  yamt   .dynstr         : { *(.dynstr) }
     17  1.2.6.2  yamt   .gnu.version    : { *(.gnu.version) }
     18  1.2.6.2  yamt   .gnu.version_d  : { *(.gnu.version_d) }
     19  1.2.6.2  yamt   .gnu.version_r  : { *(.gnu.version_r) }
     20  1.2.6.2  yamt   .rel.init       : { *(.rel.init) }
     21  1.2.6.2  yamt   .rela.init      : { *(.rela.init) }
     22  1.2.6.2  yamt   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
     23  1.2.6.2  yamt   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
     24  1.2.6.2  yamt   .rel.fini       : { *(.rel.fini) }
     25  1.2.6.2  yamt   .rela.fini      : { *(.rela.fini) }
     26  1.2.6.2  yamt   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
     27  1.2.6.2  yamt   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
     28  1.2.6.2  yamt   .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
     29  1.2.6.2  yamt   .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
     30  1.2.6.2  yamt   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
     31  1.2.6.2  yamt   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
     32  1.2.6.2  yamt   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
     33  1.2.6.2  yamt   .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
     34  1.2.6.2  yamt   .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
     35  1.2.6.2  yamt   .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
     36  1.2.6.2  yamt   .rel.ctors      : { *(.rel.ctors) }
     37  1.2.6.2  yamt   .rela.ctors     : { *(.rela.ctors) }
     38  1.2.6.2  yamt   .rel.dtors      : { *(.rel.dtors) }
     39  1.2.6.2  yamt   .rela.dtors     : { *(.rela.dtors) }
     40  1.2.6.2  yamt   .rel.got        : { *(.rel.got) }
     41  1.2.6.2  yamt   .rela.got       : { *(.rela.got) }
     42  1.2.6.2  yamt   .rel.dyn        : { *(.rel.dyn) }
     43  1.2.6.2  yamt   .rel.sdata      : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
     44  1.2.6.2  yamt   .rela.sdata     : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
     45  1.2.6.2  yamt   .rel.sbss       : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
     46  1.2.6.2  yamt   .rela.sbss      : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
     47  1.2.6.2  yamt   .rel.sdata2     : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
     48  1.2.6.2  yamt   .rela.sdata2    : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
     49  1.2.6.2  yamt   .rel.sbss2      : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
     50  1.2.6.2  yamt   .rela.sbss2     : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
     51  1.2.6.2  yamt   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
     52  1.2.6.2  yamt   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
     53  1.2.6.2  yamt   .rel.iplt       :
     54  1.2.6.2  yamt     {
     55  1.2.6.2  yamt       PROVIDE_HIDDEN (__rel_iplt_start = .);
     56  1.2.6.2  yamt       *(.rel.iplt)
     57  1.2.6.2  yamt       PROVIDE_HIDDEN (__rel_iplt_end = .);
     58  1.2.6.2  yamt     }
     59  1.2.6.2  yamt   .rela.iplt      :
     60  1.2.6.2  yamt     {
     61  1.2.6.2  yamt       PROVIDE_HIDDEN (__rela_iplt_start = .);
     62  1.2.6.2  yamt       *(.rela.iplt)
     63  1.2.6.2  yamt       PROVIDE_HIDDEN (__rela_iplt_end = .);
     64  1.2.6.2  yamt     }
     65  1.2.6.2  yamt   .rel.plt        :
     66  1.2.6.2  yamt     {
     67  1.2.6.2  yamt       *(.rel.plt)
     68  1.2.6.2  yamt     }
     69  1.2.6.2  yamt   .rela.plt       :
     70  1.2.6.2  yamt     {
     71  1.2.6.2  yamt       *(.rela.plt)
     72  1.2.6.2  yamt     }
     73  1.2.6.2  yamt   .init           :
     74  1.2.6.2  yamt   {
     75  1.2.6.2  yamt     KEEP (*(.init))
     76  1.2.6.2  yamt   } =0
     77  1.2.6.2  yamt   .plt            : { *(.plt) }
     78  1.2.6.2  yamt   .iplt           : { *(.iplt) }
     79  1.2.6.2  yamt   .text           :
     80  1.2.6.2  yamt   {
     81  1.2.6.2  yamt     _ftext = . ;
     82  1.2.6.2  yamt     *(.text.unlikely .text.*_unlikely)
     83  1.2.6.2  yamt     *(.text.exit .text.exit.*)
     84  1.2.6.2  yamt     *(.text.startup .text.startup.*)
     85  1.2.6.2  yamt     *(.text.hot .text.hot.*)
     86  1.2.6.2  yamt     *(.text .stub .text.* .gnu.linkonce.t.*)
     87  1.2.6.2  yamt     /* .gnu.warning sections are handled specially by elf32.em.  */
     88  1.2.6.2  yamt     *(.gnu.warning)
     89  1.2.6.2  yamt     *(.mips16.fn.*) *(.mips16.call.*)
     90  1.2.6.2  yamt   } =0
     91  1.2.6.2  yamt   .fini           :
     92  1.2.6.2  yamt   {
     93  1.2.6.2  yamt     KEEP (*(.fini))
     94  1.2.6.2  yamt   } =0
     95  1.2.6.2  yamt   PROVIDE (__etext = .);
     96  1.2.6.2  yamt   PROVIDE (_etext = .);
     97  1.2.6.2  yamt   PROVIDE (etext = .);
     98  1.2.6.2  yamt   .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
     99  1.2.6.2  yamt   .rodata1        : { *(.rodata1) }
    100  1.2.6.2  yamt   .sdata2         :
    101  1.2.6.2  yamt   {
    102  1.2.6.2  yamt     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
    103  1.2.6.2  yamt   }
    104  1.2.6.2  yamt   .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
    105  1.2.6.2  yamt   .eh_frame_hdr : { *(.eh_frame_hdr) }
    106  1.2.6.2  yamt   .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
    107  1.2.6.2  yamt   .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
    108  1.2.6.2  yamt   /* Adjust the address for the data segment.  We want to adjust up to
    109  1.2.6.2  yamt      the same address within the page on the next page up.  */
    110  1.2.6.2  yamt   . = .;
    111  1.2.6.2  yamt   /* Exception handling  */
    112  1.2.6.2  yamt   .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
    113  1.2.6.2  yamt   .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
    114  1.2.6.2  yamt   /* Thread Local Storage sections  */
    115  1.2.6.2  yamt   .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
    116  1.2.6.2  yamt   .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
    117  1.2.6.2  yamt   .preinit_array     :
    118  1.2.6.2  yamt   {
    119  1.2.6.2  yamt     PROVIDE_HIDDEN (__preinit_array_start = .);
    120  1.2.6.2  yamt     KEEP (*(.preinit_array))
    121  1.2.6.2  yamt     PROVIDE_HIDDEN (__preinit_array_end = .);
    122  1.2.6.2  yamt   }
    123  1.2.6.2  yamt   .init_array     :
    124  1.2.6.2  yamt   {
    125  1.2.6.2  yamt     PROVIDE_HIDDEN (__init_array_start = .);
    126  1.2.6.2  yamt     KEEP (*(SORT(.init_array.*)))
    127  1.2.6.2  yamt     KEEP (*(.init_array))
    128  1.2.6.2  yamt     PROVIDE_HIDDEN (__init_array_end = .);
    129  1.2.6.2  yamt   }
    130  1.2.6.2  yamt   .fini_array     :
    131  1.2.6.2  yamt   {
    132  1.2.6.2  yamt     PROVIDE_HIDDEN (__fini_array_start = .);
    133  1.2.6.2  yamt     KEEP (*(SORT(.fini_array.*)))
    134  1.2.6.2  yamt     KEEP (*(.fini_array))
    135  1.2.6.2  yamt     PROVIDE_HIDDEN (__fini_array_end = .);
    136  1.2.6.2  yamt   }
    137  1.2.6.2  yamt   .ctors          :
    138  1.2.6.2  yamt   {
    139  1.2.6.2  yamt     /* gcc uses crtbegin.o to find the start of
    140  1.2.6.2  yamt        the constructors, so we make sure it is
    141  1.2.6.2  yamt        first.  Because this is a wildcard, it
    142  1.2.6.2  yamt        doesn't matter if the user does not
    143  1.2.6.2  yamt        actually link against crtbegin.o; the
    144  1.2.6.2  yamt        linker won't look for a file to match a
    145  1.2.6.2  yamt        wildcard.  The wildcard also means that it
    146  1.2.6.2  yamt        doesn't matter which directory crtbegin.o
    147  1.2.6.2  yamt        is in.  */
    148  1.2.6.2  yamt     KEEP (*crtbegin.o(.ctors))
    149  1.2.6.2  yamt     KEEP (*crtbegin?.o(.ctors))
    150  1.2.6.2  yamt     /* We don't want to include the .ctor section from
    151  1.2.6.2  yamt        the crtend.o file until after the sorted ctors.
    152  1.2.6.2  yamt        The .ctor section from the crtend file contains the
    153  1.2.6.2  yamt        end of ctors marker and it must be last */
    154  1.2.6.2  yamt     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
    155  1.2.6.2  yamt     KEEP (*(SORT(.ctors.*)))
    156  1.2.6.2  yamt     KEEP (*(.ctors))
    157  1.2.6.2  yamt   }
    158  1.2.6.2  yamt   .dtors          :
    159  1.2.6.2  yamt   {
    160  1.2.6.2  yamt     KEEP (*crtbegin.o(.dtors))
    161  1.2.6.2  yamt     KEEP (*crtbegin?.o(.dtors))
    162  1.2.6.2  yamt     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
    163  1.2.6.2  yamt     KEEP (*(SORT(.dtors.*)))
    164  1.2.6.2  yamt     KEEP (*(.dtors))
    165  1.2.6.2  yamt   }
    166  1.2.6.2  yamt   .jcr            : { KEEP (*(.jcr)) }
    167  1.2.6.2  yamt   .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
    168  1.2.6.2  yamt   .data           :
    169  1.2.6.2  yamt   {
    170  1.2.6.2  yamt     _fdata = . ;
    171  1.2.6.2  yamt     *(.data .data.* .gnu.linkonce.d.*)
    172  1.2.6.2  yamt     SORT(CONSTRUCTORS)
    173  1.2.6.2  yamt   }
    174  1.2.6.2  yamt   .data1          : { *(.data1) }
    175  1.2.6.2  yamt   .got.plt        : { *(.got.plt) }
    176  1.2.6.2  yamt   . = .;
    177  1.2.6.2  yamt   _gp = ALIGN(16) + 0x7ff0;
    178  1.2.6.2  yamt   .got            : { *(.got) }
    179  1.2.6.2  yamt   /* We want the small data sections together, so single-instruction offsets
    180  1.2.6.2  yamt      can access them all, and initialized data all before uninitialized, so
    181  1.2.6.2  yamt      we can shorten the on-disk segment size.  */
    182  1.2.6.2  yamt   .sdata          :
    183  1.2.6.2  yamt   {
    184  1.2.6.2  yamt     *(.sdata .sdata.* .gnu.linkonce.s.*)
    185  1.2.6.2  yamt   }
    186  1.2.6.2  yamt   .lit8           : { *(.lit8) }
    187  1.2.6.2  yamt   .lit4           : { *(.lit4) }
    188  1.2.6.2  yamt   _edata = .; PROVIDE (edata = .);
    189  1.2.6.2  yamt   __bss_start = .;
    190  1.2.6.2  yamt   _fbss = .;
    191  1.2.6.2  yamt   .sbss           :
    192  1.2.6.2  yamt   {
    193  1.2.6.2  yamt     *(.dynsbss)
    194  1.2.6.2  yamt     *(.sbss .sbss.* .gnu.linkonce.sb.*)
    195  1.2.6.2  yamt     *(.scommon)
    196  1.2.6.2  yamt   }
    197  1.2.6.2  yamt   .bss            :
    198  1.2.6.2  yamt   {
    199  1.2.6.2  yamt    *(.dynbss)
    200  1.2.6.2  yamt    *(.bss .bss.* .gnu.linkonce.b.*)
    201  1.2.6.2  yamt    *(COMMON)
    202  1.2.6.2  yamt    /* Align here to ensure that the .bss section occupies space up to
    203  1.2.6.2  yamt       _end.  Align after .bss to ensure correct alignment even if the
    204  1.2.6.2  yamt       .bss section disappears because there are no input sections.
    205  1.2.6.2  yamt       FIXME: Why do we need it? When there is no .bss section, we don't
    206  1.2.6.2  yamt       pad the .data section.  */
    207  1.2.6.2  yamt    . = ALIGN(. != 0 ? 32 / 8 : 1);
    208  1.2.6.2  yamt   }
    209  1.2.6.2  yamt   . = ALIGN(32 / 8);
    210  1.2.6.2  yamt   . = ALIGN(32 / 8);
    211  1.2.6.2  yamt   _end = .; PROVIDE (end = .);
    212  1.2.6.2  yamt   /* Stabs debugging sections.  */
    213  1.2.6.2  yamt   .stab          0 : { *(.stab) }
    214  1.2.6.2  yamt   .stabstr       0 : { *(.stabstr) }
    215  1.2.6.2  yamt   .stab.excl     0 : { *(.stab.excl) }
    216  1.2.6.2  yamt   .stab.exclstr  0 : { *(.stab.exclstr) }
    217  1.2.6.2  yamt   .stab.index    0 : { *(.stab.index) }
    218  1.2.6.2  yamt   .stab.indexstr 0 : { *(.stab.indexstr) }
    219  1.2.6.2  yamt   .comment       0 : { *(.comment) }
    220  1.2.6.2  yamt   /* DWARF debug sections.
    221  1.2.6.2  yamt      Symbols in the DWARF debugging sections are relative to the beginning
    222  1.2.6.2  yamt      of the section so we begin them at 0.  */
    223  1.2.6.2  yamt   /* DWARF 1 */
    224  1.2.6.2  yamt   .debug          0 : { *(.debug) }
    225  1.2.6.2  yamt   .line           0 : { *(.line) }
    226  1.2.6.2  yamt   /* GNU DWARF 1 extensions */
    227  1.2.6.2  yamt   .debug_srcinfo  0 : { *(.debug_srcinfo) }
    228  1.2.6.2  yamt   .debug_sfnames  0 : { *(.debug_sfnames) }
    229  1.2.6.2  yamt   /* DWARF 1.1 and DWARF 2 */
    230  1.2.6.2  yamt   .debug_aranges  0 : { *(.debug_aranges) }
    231  1.2.6.2  yamt   .debug_pubnames 0 : { *(.debug_pubnames) }
    232  1.2.6.2  yamt   /* DWARF 2 */
    233  1.2.6.2  yamt   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
    234  1.2.6.2  yamt   .debug_abbrev   0 : { *(.debug_abbrev) }
    235  1.2.6.2  yamt   .debug_line     0 : { *(.debug_line) }
    236  1.2.6.2  yamt   .debug_frame    0 : { *(.debug_frame) }
    237  1.2.6.2  yamt   .debug_str      0 : { *(.debug_str) }
    238  1.2.6.2  yamt   .debug_loc      0 : { *(.debug_loc) }
    239  1.2.6.2  yamt   .debug_macinfo  0 : { *(.debug_macinfo) }
    240  1.2.6.2  yamt   /* SGI/MIPS DWARF 2 extensions */
    241  1.2.6.2  yamt   .debug_weaknames 0 : { *(.debug_weaknames) }
    242  1.2.6.2  yamt   .debug_funcnames 0 : { *(.debug_funcnames) }
    243  1.2.6.2  yamt   .debug_typenames 0 : { *(.debug_typenames) }
    244  1.2.6.2  yamt   .debug_varnames  0 : { *(.debug_varnames) }
    245  1.2.6.2  yamt   /* DWARF 3 */
    246  1.2.6.2  yamt   .debug_pubtypes 0 : { *(.debug_pubtypes) }
    247  1.2.6.2  yamt   .debug_ranges   0 : { *(.debug_ranges) }
    248  1.2.6.2  yamt   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
    249  1.2.6.2  yamt   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
    250  1.2.6.2  yamt   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
    251  1.2.6.2  yamt   .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
    252  1.2.6.2  yamt   .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
    253  1.2.6.2  yamt   .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
    254  1.2.6.2  yamt   .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
    255  1.2.6.2  yamt   .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
    256  1.2.6.2  yamt   .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
    257  1.2.6.2  yamt   .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
    258  1.2.6.2  yamt   .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
    259  1.2.6.2  yamt   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
    260  1.2.6.2  yamt }
    261