Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.9
      1  1.9     chs /*	$NetBSD: kern.ldscript,v 1.9 2007/06/04 04:53:44 chs Exp $	*/
      2  1.2     mrg 
      3  1.2     mrg /*
      4  1.2     mrg  * Kernel linker script for NetBSD/sparc64.  This script is based on
      5  1.2     mrg  * elf64_sparc.xn, but puts _etext after all of the read-only sections.
      6  1.2     mrg  */
      7  1.1     mrg OUTPUT_FORMAT("elf64-sparc", "elf64-sparc",
      8  1.1     mrg 	      "elf64-sparc")
      9  1.1     mrg OUTPUT_ARCH(sparc:v9)
     10  1.1     mrg ENTRY(_start)
     11  1.1     mrg SEARCH_DIR(/usr/lib);
     12  1.1     mrg /* Do we need any of these for elf?
     13  1.1     mrg    __DYNAMIC = 0;    */
     14  1.1     mrg SECTIONS
     15  1.1     mrg {
     16  1.1     mrg   /* Read-only sections, merged into text segment: */
     17  1.6  martin   . = 0x100000 + SIZEOF_HEADERS;
     18  1.1     mrg   .interp     : { *(.interp) 	}
     19  1.1     mrg   .hash          : { *(.hash)		}
     20  1.1     mrg   .dynsym        : { *(.dynsym)		}
     21  1.1     mrg   .dynstr        : { *(.dynstr)		}
     22  1.1     mrg   .gnu.version   : { *(.gnu.version)	}
     23  1.1     mrg   .gnu.version_d   : { *(.gnu.version_d)	}
     24  1.1     mrg   .gnu.version_r   : { *(.gnu.version_r)	}
     25  1.1     mrg   .rel.text      :
     26  1.1     mrg     { *(.rel.text) *(.rel.gnu.linkonce.t*) }
     27  1.1     mrg   .rela.text     :
     28  1.1     mrg     { *(.rela.text) *(.rela.gnu.linkonce.t*) }
     29  1.1     mrg   .rel.data      :
     30  1.1     mrg     { *(.rel.data) *(.rel.gnu.linkonce.d*) }
     31  1.1     mrg   .rela.data     :
     32  1.1     mrg     { *(.rela.data) *(.rela.gnu.linkonce.d*) }
     33  1.1     mrg   .rel.rodata    :
     34  1.1     mrg     { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
     35  1.1     mrg   .rela.rodata   :
     36  1.1     mrg     { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
     37  1.1     mrg   .rel.got       : { *(.rel.got)		}
     38  1.1     mrg   .rela.got      : { *(.rela.got)		}
     39  1.1     mrg   .rel.ctors     : { *(.rel.ctors)	}
     40  1.1     mrg   .rela.ctors    : { *(.rela.ctors)	}
     41  1.1     mrg   .rel.dtors     : { *(.rel.dtors)	}
     42  1.1     mrg   .rela.dtors    : { *(.rela.dtors)	}
     43  1.1     mrg   .rel.init      : { *(.rel.init)	}
     44  1.1     mrg   .rela.init     : { *(.rela.init)	}
     45  1.1     mrg   .rel.fini      : { *(.rel.fini)	}
     46  1.1     mrg   .rela.fini     : { *(.rela.fini)	}
     47  1.1     mrg   .rel.bss       : { *(.rel.bss)		}
     48  1.1     mrg   .rela.bss      : { *(.rela.bss)		}
     49  1.1     mrg   .rel.plt       : { *(.rel.plt)		}
     50  1.1     mrg   .rela.plt      : { *(.rela.plt)		}
     51  1.1     mrg   .init          : { *(.init)	} =0x01000000
     52  1.1     mrg   .text      :
     53  1.1     mrg   {
     54  1.1     mrg     *(.text)
     55  1.1     mrg     *(.stub)
     56  1.1     mrg     /* .gnu.warning sections are handled specially by elf32.em.  */
     57  1.1     mrg     *(.gnu.warning)
     58  1.1     mrg     *(.gnu.linkonce.t*)
     59  1.1     mrg   } =0x01000000
     60  1.1     mrg   .fini      : { *(.fini)    } =0x01000000
     61  1.1     mrg   .rodata    : { *(.rodata) *(.gnu.linkonce.r*) }
     62  1.1     mrg   .rodata1   : { *(.rodata1) }
     63  1.2     mrg   _etext = .;
     64  1.2     mrg   PROVIDE (etext = .);
     65  1.9     chs   /* Adjust the address for the data segment.  We push the data segment
     66  1.9     chs      up to the next 4MB boundary so that we can map the text with large
     67  1.9     chs      pages. */
     68  1.9     chs   . = ALIGN(0x400000);
     69  1.2     mrg   kernel_data_start = .;
     70  1.1     mrg   .data    :
     71  1.1     mrg   {
     72  1.1     mrg     *(.data)
     73  1.1     mrg     *(.gnu.linkonce.d*)
     74  1.1     mrg     CONSTRUCTORS
     75  1.1     mrg   }
     76  1.1     mrg   .data1   : { *(.data1) }
     77  1.1     mrg   .ctors         :
     78  1.1     mrg   {
     79  1.1     mrg     *(.ctors)
     80  1.1     mrg   }
     81  1.1     mrg   .dtors         :
     82  1.1     mrg   {
     83  1.1     mrg     *(.dtors)
     84  1.1     mrg   }
     85  1.1     mrg   .plt      : { *(.plt)	}
     86  1.1     mrg   .got           : { *(.got.plt) *(.got) }
     87  1.1     mrg   .dynamic       : { *(.dynamic) }
     88  1.1     mrg   /* We want the small data sections together, so single-instruction offsets
     89  1.1     mrg      can access them all, and initialized data all before uninitialized, so
     90  1.1     mrg      we can shorten the on-disk segment size.  */
     91  1.1     mrg   .sdata     : { *(.sdata) }
     92  1.1     mrg   _edata  =  .;
     93  1.1     mrg   PROVIDE (edata = .);
     94  1.1     mrg   __bss_start = .;
     95  1.1     mrg   .sbss      : { *(.sbss) *(.scommon) }
     96  1.1     mrg   .bss       :
     97  1.1     mrg   {
     98  1.1     mrg    *(.dynbss)
     99  1.1     mrg    *(.bss)
    100  1.1     mrg    *(COMMON)
    101  1.1     mrg   }
    102  1.1     mrg   . = ALIGN(64 / 8);
    103  1.1     mrg   _end = . ;
    104  1.1     mrg   PROVIDE (end = .);
    105  1.1     mrg   /* Stabs debugging sections.  */
    106  1.1     mrg   .stab 0 : { *(.stab) }
    107  1.1     mrg   .stabstr 0 : { *(.stabstr) }
    108  1.1     mrg   .stab.excl 0 : { *(.stab.excl) }
    109  1.1     mrg   .stab.exclstr 0 : { *(.stab.exclstr) }
    110  1.1     mrg   .stab.index 0 : { *(.stab.index) }
    111  1.1     mrg   .stab.indexstr 0 : { *(.stab.indexstr) }
    112  1.1     mrg   .comment 0 : { *(.comment) }
    113  1.1     mrg   /* DWARF debug sections.
    114  1.1     mrg      Symbols in the DWARF debugging sections are relative to the beginning
    115  1.1     mrg      of the section so we begin them at 0.  */
    116  1.1     mrg   /* DWARF 1 */
    117  1.1     mrg   .debug          0 : { *(.debug) }
    118  1.1     mrg   .line           0 : { *(.line) }
    119  1.1     mrg   /* GNU DWARF 1 extensions */
    120  1.1     mrg   .debug_srcinfo  0 : { *(.debug_srcinfo) }
    121  1.1     mrg   .debug_sfnames  0 : { *(.debug_sfnames) }
    122  1.1     mrg   /* DWARF 1.1 and DWARF 2 */
    123  1.1     mrg   .debug_aranges  0 : { *(.debug_aranges) }
    124  1.1     mrg   .debug_pubnames 0 : { *(.debug_pubnames) }
    125  1.1     mrg   /* DWARF 2 */
    126  1.1     mrg   .debug_info     0 : { *(.debug_info) }
    127  1.1     mrg   .debug_abbrev   0 : { *(.debug_abbrev) }
    128  1.1     mrg   .debug_line     0 : { *(.debug_line) }
    129  1.1     mrg   .debug_frame    0 : { *(.debug_frame) }
    130  1.1     mrg   .debug_str      0 : { *(.debug_str) }
    131  1.1     mrg   .debug_loc      0 : { *(.debug_loc) }
    132  1.1     mrg   .debug_macinfo  0 : { *(.debug_macinfo) }
    133  1.1     mrg   /* SGI/MIPS DWARF 2 extensions */
    134  1.1     mrg   .debug_weaknames 0 : { *(.debug_weaknames) }
    135  1.1     mrg   .debug_funcnames 0 : { *(.debug_funcnames) }
    136  1.1     mrg   .debug_typenames 0 : { *(.debug_typenames) }
    137  1.1     mrg   .debug_varnames  0 : { *(.debug_varnames) }
    138  1.1     mrg   /* These must appear regardless of  .  */
    139  1.8  martin   .note.netbsd.ident :
    140  1.8  martin   {
    141  1.8  martin     KEEP(*(.note.netbsd.ident));
    142  1.8  martin   }
    143  1.1     mrg }
    144