[PATCH] kprobes: prevent possible race conditions i386 changes
[deliverable/linux.git] / arch / i386 / kernel / vmlinux.lds.S
CommitLineData
1da177e4
LT
1/* ld script to make i386 Linux kernel
2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
3 */
4
ad0d75eb
EB
5#define LOAD_OFFSET __PAGE_OFFSET
6
1da177e4
LT
7#include <asm-generic/vmlinux.lds.h>
8#include <asm/thread_info.h>
9#include <asm/page.h>
10
11OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
12OUTPUT_ARCH(i386)
ad0d75eb 13ENTRY(phys_startup_32)
1da177e4
LT
14jiffies = jiffies_64;
15SECTIONS
16{
3d345e3f 17 . = __KERNEL_START;
ad0d75eb 18 phys_startup_32 = startup_32 - LOAD_OFFSET;
1da177e4
LT
19 /* read-only */
20 _text = .; /* Text and read-only data */
ad0d75eb 21 .text : AT(ADDR(.text) - LOAD_OFFSET) {
1da177e4
LT
22 *(.text)
23 SCHED_TEXT
24 LOCK_TEXT
3d97ae5b 25 KPROBES_TEXT
1da177e4
LT
26 *(.fixup)
27 *(.gnu.warning)
28 } = 0x9090
29
30 _etext = .; /* End of text section */
31
32 . = ALIGN(16); /* Exception table */
33 __start___ex_table = .;
ad0d75eb 34 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { *(__ex_table) }
1da177e4
LT
35 __stop___ex_table = .;
36
37 RODATA
38
39 /* writeable */
ad0d75eb 40 .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */
1da177e4
LT
41 *(.data)
42 CONSTRUCTORS
43 }
44
45 . = ALIGN(4096);
46 __nosave_begin = .;
ad0d75eb 47 .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.data.nosave) }
1da177e4
LT
48 . = ALIGN(4096);
49 __nosave_end = .;
50
51 . = ALIGN(4096);
ad0d75eb
EB
52 .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
53 *(.data.idt)
54 }
1da177e4
LT
55
56 . = ALIGN(32);
ad0d75eb
EB
57 .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
58 *(.data.cacheline_aligned)
59 }
1da177e4 60
6c036527
CL
61 /* rarely changed data like cpu maps */
62 . = ALIGN(32);
63 .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { *(.data.read_mostly) }
1da177e4
LT
64 _edata = .; /* End of data section */
65
66 . = ALIGN(THREAD_SIZE); /* init_task */
ad0d75eb
EB
67 .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
68 *(.data.init_task)
69 }
1da177e4
LT
70
71 /* will be freed after init */
72 . = ALIGN(4096); /* Init code and data */
73 __init_begin = .;
ad0d75eb 74 .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
1da177e4
LT
75 _sinittext = .;
76 *(.init.text)
77 _einittext = .;
78 }
ad0d75eb 79 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { *(.init.data) }
1da177e4
LT
80 . = ALIGN(16);
81 __setup_start = .;
ad0d75eb 82 .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup) }
1da177e4
LT
83 __setup_end = .;
84 __initcall_start = .;
ad0d75eb 85 .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
1da177e4
LT
86 *(.initcall1.init)
87 *(.initcall2.init)
88 *(.initcall3.init)
89 *(.initcall4.init)
90 *(.initcall5.init)
91 *(.initcall6.init)
92 *(.initcall7.init)
93 }
94 __initcall_end = .;
95 __con_initcall_start = .;
ad0d75eb
EB
96 .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
97 *(.con_initcall.init)
98 }
1da177e4
LT
99 __con_initcall_end = .;
100 SECURITY_INIT
101 . = ALIGN(4);
102 __alt_instructions = .;
ad0d75eb
EB
103 .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
104 *(.altinstructions)
105 }
1da177e4 106 __alt_instructions_end = .;
ad0d75eb
EB
107 .altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) {
108 *(.altinstr_replacement)
109 }
1da177e4
LT
110 /* .exit.text is discard at runtime, not link time, to deal with references
111 from .altinstructions and .eh_frame */
ad0d75eb
EB
112 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) }
113 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) }
1da177e4
LT
114 . = ALIGN(4096);
115 __initramfs_start = .;
ad0d75eb 116 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) }
1da177e4
LT
117 __initramfs_end = .;
118 . = ALIGN(32);
119 __per_cpu_start = .;
ad0d75eb 120 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) }
1da177e4
LT
121 __per_cpu_end = .;
122 . = ALIGN(4096);
123 __init_end = .;
124 /* freed after init ends here */
125
126 __bss_start = .; /* BSS */
ad0d75eb 127 .bss.page_aligned : AT(ADDR(.bss.page_aligned) - LOAD_OFFSET) {
1da177e4 128 *(.bss.page_aligned)
ad0d75eb
EB
129 }
130 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
1da177e4
LT
131 *(.bss)
132 }
133 . = ALIGN(4);
134 __bss_stop = .;
135
136 _end = . ;
137
138 /* This is where the kernel creates the early boot page tables */
139 . = ALIGN(4096);
140 pg0 = .;
141
142 /* Sections to be discarded */
143 /DISCARD/ : {
144 *(.exitcall.exit)
145 }
146
147 /* Stabs debugging sections. */
148 .stab 0 : { *(.stab) }
149 .stabstr 0 : { *(.stabstr) }
150 .stab.excl 0 : { *(.stab.excl) }
151 .stab.exclstr 0 : { *(.stab.exclstr) }
152 .stab.index 0 : { *(.stab.index) }
153 .stab.indexstr 0 : { *(.stab.indexstr) }
154 .comment 0 : { *(.comment) }
155}
This page took 0.066936 seconds and 5 git commands to generate.