1 #include <asm/vmlinux.lds.h>
   2 #include <asm/page.h>
   3 
   4 OUTPUT_FORMAT(ELF_FORMAT)
   5 OUTPUT_ARCH(ELF_ARCH)
   6 ENTRY(_start)
   7 jiffies = jiffies_64;
   8 
   9 SECTIONS
  10 {
  11   PROVIDE (__executable_start = START);
  12   . = START + SIZEOF_HEADERS;
  13   .interp         : { *(.interp) }
  14   __binary_start = .;
  15   . = ALIGN(4096);              
  16   _text = .;
  17   INIT_TEXT_SECTION(PAGE_SIZE)
  18 
  19   . = ALIGN(PAGE_SIZE);
  20 
  21   
  22   .hash           : { *(.hash) }
  23   .gnu.hash       : { *(.gnu.hash) }
  24   .dynsym         : { *(.dynsym) }
  25   .dynstr         : { *(.dynstr) }
  26   .gnu.version    : { *(.gnu.version) }
  27   .gnu.version_d  : { *(.gnu.version_d) }
  28   .gnu.version_r  : { *(.gnu.version_r) }
  29   .rel.init       : { *(.rel.init) }
  30   .rela.init      : { *(.rela.init) }
  31   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
  32   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
  33   .rel.fini       : { *(.rel.fini) }
  34   .rela.fini      : { *(.rela.fini) }
  35   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
  36   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
  37   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
  38   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
  39   .rel.tdata      : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
  40   .rela.tdata     : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
  41   .rel.tbss       : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
  42   .rela.tbss      : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
  43   .rel.ctors      : { *(.rel.ctors) }
  44   .rela.ctors     : { *(.rela.ctors) }
  45   .rel.dtors      : { *(.rel.dtors) }
  46   .rela.dtors     : { *(.rela.dtors) }
  47   .rel.got        : { *(.rel.got) }
  48   .rela.got       : { *(.rela.got) }
  49   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
  50   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
  51   .rel.plt : {
  52         *(.rel.plt)
  53         PROVIDE_HIDDEN(__rel_iplt_start = .);
  54         *(.rel.iplt)
  55         PROVIDE_HIDDEN(__rel_iplt_end = .);
  56   }
  57   .rela.plt : {
  58         *(.rela.plt)
  59         PROVIDE_HIDDEN(__rela_iplt_start = .);
  60         *(.rela.iplt)
  61         PROVIDE_HIDDEN(__rela_iplt_end = .);
  62   }
  63   .init           : {
  64     KEEP (*(.init))
  65   } =0x90909090
  66   .plt            : { *(.plt) }
  67   .text           : {
  68     _stext = .;
  69     TEXT_TEXT
  70     SCHED_TEXT
  71     CPUIDLE_TEXT
  72     LOCK_TEXT
  73     IRQENTRY_TEXT
  74     SOFTIRQENTRY_TEXT
  75     *(.fixup)
  76     *(.stub .text.* .gnu.linkonce.t.*)
  77     
  78     *(.gnu.warning)
  79 
  80     . = ALIGN(PAGE_SIZE);
  81   } =0x90909090
  82   . = ALIGN(PAGE_SIZE);
  83   .syscall_stub : {
  84         __syscall_stub_start = .;
  85         *(.__syscall_stub*)
  86         __syscall_stub_end = .;
  87   }
  88   .fini           : {
  89     KEEP (*(.fini))
  90   } =0x90909090
  91 
  92   .kstrtab : { *(.kstrtab) }
  93 
  94   #include <asm/common.lds.S>
  95 
  96   __init_begin = .;
  97   init.data : { INIT_DATA }
  98   __init_end = .;
  99 
 100   
 101 
 102 
 103 
 104   . = ALIGN(32 / 8);
 105   .preinit_array     : { *(.preinit_array) }
 106   .init_array     : { *(.init_array) }
 107   .fini_array     : { *(.fini_array) }
 108   .data           : {
 109     INIT_TASK_DATA(KERNEL_STACK_SIZE)
 110     . = ALIGN(KERNEL_STACK_SIZE);
 111     *(.data..init_irqstack)
 112     DATA_DATA
 113     *(.data.* .gnu.linkonce.d.*)
 114     SORT(CONSTRUCTORS)
 115   }
 116   .data1          : { *(.data1) }
 117   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
 118   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
 119   .eh_frame       : { KEEP (*(.eh_frame)) }
 120   .gcc_except_table   : { *(.gcc_except_table) }
 121   .dynamic        : { *(.dynamic) }
 122   .ctors          : {
 123     
 124 
 125 
 126 
 127 
 128 
 129 
 130 
 131 
 132     KEEP (*crtbegin.o(.ctors))
 133     
 134 
 135 
 136 
 137     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
 138     KEEP (*(SORT(.ctors.*)))
 139     KEEP (*(.ctors))
 140   }
 141   .dtors          : {
 142     KEEP (*crtbegin.o(.dtors))
 143     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
 144     KEEP (*(SORT(.dtors.*)))
 145     KEEP (*(.dtors))
 146   }
 147   .jcr            : { KEEP (*(.jcr)) }
 148   .got            : { *(.got.plt) *(.got) }
 149   _edata = .;
 150   PROVIDE (edata = .);
 151   .bss            : {
 152    __bss_start = .;
 153    *(.dynbss)
 154    *(.bss .bss.* .gnu.linkonce.b.*)
 155    *(COMMON)
 156    
 157 
 158 
 159    . = ALIGN(32 / 8);
 160   . = ALIGN(32 / 8);
 161   }
 162    __bss_stop = .;
 163   _end = .;
 164   PROVIDE (end = .);
 165 
 166   STABS_DEBUG
 167 
 168   DWARF_DEBUG
 169 
 170   DISCARDS
 171 }