diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2008-01-20 08:15:03 -0500 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2008-01-28 17:21:17 -0500 |
commit | 01ba2bdc6b639764745ff678caf3fb9e5bcd745a (patch) | |
tree | c6e7f1925687485c331189a2d55ff4f2bb0a09df | |
parent | 6c5bd235bfd0b92188915465c7dfb377c1a4d451 (diff) |
all archs: consolidate init and exit sections in vmlinux.lds.h
This patch consolidate all definitions of .init.text, .init.data
and .exit.text, .exit.data section definitions in
the generic vmlinux.lds.h.
This is a preparational patch - alone it does not buy
us much good.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
29 files changed, 140 insertions, 117 deletions
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index 55c05b511f4c..f13249be17c5 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S | |||
@@ -46,11 +46,11 @@ SECTIONS | |||
46 | __init_begin = .; | 46 | __init_begin = .; |
47 | .init.text : { | 47 | .init.text : { |
48 | _sinittext = .; | 48 | _sinittext = .; |
49 | *(.init.text) | 49 | INIT_TEXT |
50 | _einittext = .; | 50 | _einittext = .; |
51 | } | 51 | } |
52 | .init.data : { | 52 | .init.data : { |
53 | *(.init.data) | 53 | INIT_DATA |
54 | } | 54 | } |
55 | 55 | ||
56 | . = ALIGN(16); | 56 | . = ALIGN(16); |
@@ -136,8 +136,8 @@ SECTIONS | |||
136 | 136 | ||
137 | /* Sections to be discarded */ | 137 | /* Sections to be discarded */ |
138 | /DISCARD/ : { | 138 | /DISCARD/ : { |
139 | *(.exit.text) | 139 | EXIT_TEXT |
140 | *(.exit.data) | 140 | EXIT_DATA |
141 | *(.exitcall.exit) | 141 | *(.exitcall.exit) |
142 | } | 142 | } |
143 | 143 | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 30f732c7fdb5..4898bdcfe7dd 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -30,7 +30,7 @@ SECTIONS | |||
30 | } | 30 | } |
31 | 31 | ||
32 | .init : { /* Init code and data */ | 32 | .init : { /* Init code and data */ |
33 | *(.init.text) | 33 | INIT_TEXT |
34 | _einittext = .; | 34 | _einittext = .; |
35 | __proc_info_begin = .; | 35 | __proc_info_begin = .; |
36 | *(.proc.info.init) | 36 | *(.proc.info.init) |
@@ -70,15 +70,15 @@ SECTIONS | |||
70 | __per_cpu_end = .; | 70 | __per_cpu_end = .; |
71 | #ifndef CONFIG_XIP_KERNEL | 71 | #ifndef CONFIG_XIP_KERNEL |
72 | __init_begin = _stext; | 72 | __init_begin = _stext; |
73 | *(.init.data) | 73 | INIT_DATA |
74 | . = ALIGN(4096); | 74 | . = ALIGN(4096); |
75 | __init_end = .; | 75 | __init_end = .; |
76 | #endif | 76 | #endif |
77 | } | 77 | } |
78 | 78 | ||
79 | /DISCARD/ : { /* Exit code and data */ | 79 | /DISCARD/ : { /* Exit code and data */ |
80 | *(.exit.text) | 80 | EXIT_TEXT |
81 | *(.exit.data) | 81 | EXIT_DATA |
82 | *(.exitcall.exit) | 82 | *(.exitcall.exit) |
83 | #ifndef CONFIG_MMU | 83 | #ifndef CONFIG_MMU |
84 | *(.fixup) | 84 | *(.fixup) |
@@ -130,7 +130,7 @@ SECTIONS | |||
130 | #ifdef CONFIG_XIP_KERNEL | 130 | #ifdef CONFIG_XIP_KERNEL |
131 | . = ALIGN(4096); | 131 | . = ALIGN(4096); |
132 | __init_begin = .; | 132 | __init_begin = .; |
133 | *(.init.data) | 133 | INIT_DATA |
134 | . = ALIGN(4096); | 134 | . = ALIGN(4096); |
135 | __init_end = .; | 135 | __init_end = .; |
136 | #endif | 136 | #endif |
diff --git a/arch/avr32/kernel/vmlinux.lds.S b/arch/avr32/kernel/vmlinux.lds.S index 11f08e35a2eb..481cfd40c053 100644 --- a/arch/avr32/kernel/vmlinux.lds.S +++ b/arch/avr32/kernel/vmlinux.lds.S | |||
@@ -27,19 +27,19 @@ SECTIONS | |||
27 | __init_begin = .; | 27 | __init_begin = .; |
28 | _sinittext = .; | 28 | _sinittext = .; |
29 | *(.text.reset) | 29 | *(.text.reset) |
30 | *(.init.text) | 30 | INIT_TEXT |
31 | /* | 31 | /* |
32 | * .exit.text is discarded at runtime, not | 32 | * .exit.text is discarded at runtime, not |
33 | * link time, to deal with references from | 33 | * link time, to deal with references from |
34 | * __bug_table | 34 | * __bug_table |
35 | */ | 35 | */ |
36 | *(.exit.text) | 36 | EXIT_TEXT |
37 | _einittext = .; | 37 | _einittext = .; |
38 | . = ALIGN(4); | 38 | . = ALIGN(4); |
39 | __tagtable_begin = .; | 39 | __tagtable_begin = .; |
40 | *(.taglist.init) | 40 | *(.taglist.init) |
41 | __tagtable_end = .; | 41 | __tagtable_end = .; |
42 | *(.init.data) | 42 | INIT_DATA |
43 | . = ALIGN(16); | 43 | . = ALIGN(16); |
44 | __setup_start = .; | 44 | __setup_start = .; |
45 | *(.init.setup) | 45 | *(.init.setup) |
@@ -135,7 +135,7 @@ SECTIONS | |||
135 | * thrown away, as cleanup code is never called unless it's a module. | 135 | * thrown away, as cleanup code is never called unless it's a module. |
136 | */ | 136 | */ |
137 | /DISCARD/ : { | 137 | /DISCARD/ : { |
138 | *(.exit.data) | 138 | EXIT_DATA |
139 | *(.exitcall.exit) | 139 | *(.exitcall.exit) |
140 | } | 140 | } |
141 | 141 | ||
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index 9b75bc83c71f..858722421b40 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S | |||
@@ -91,13 +91,13 @@ SECTIONS | |||
91 | { | 91 | { |
92 | . = ALIGN(PAGE_SIZE); | 92 | . = ALIGN(PAGE_SIZE); |
93 | __sinittext = .; | 93 | __sinittext = .; |
94 | *(.init.text) | 94 | INIT_TEXT |
95 | __einittext = .; | 95 | __einittext = .; |
96 | } | 96 | } |
97 | .init.data : | 97 | .init.data : |
98 | { | 98 | { |
99 | . = ALIGN(16); | 99 | . = ALIGN(16); |
100 | *(.init.data) | 100 | INIT_DATA |
101 | } | 101 | } |
102 | .init.setup : | 102 | .init.setup : |
103 | { | 103 | { |
@@ -198,8 +198,8 @@ SECTIONS | |||
198 | 198 | ||
199 | /DISCARD/ : | 199 | /DISCARD/ : |
200 | { | 200 | { |
201 | *(.exit.text) | 201 | EXIT_TEXT |
202 | *(.exit.data) | 202 | EXIT_DATA |
203 | *(.exitcall.exit) | 203 | *(.exitcall.exit) |
204 | } | 204 | } |
205 | } | 205 | } |
diff --git a/arch/cris/arch-v10/vmlinux.lds.S b/arch/cris/arch-v10/vmlinux.lds.S index 97a7876ed681..93c9f0ea286b 100644 --- a/arch/cris/arch-v10/vmlinux.lds.S +++ b/arch/cris/arch-v10/vmlinux.lds.S | |||
@@ -57,10 +57,10 @@ SECTIONS | |||
57 | __init_begin = .; | 57 | __init_begin = .; |
58 | .init.text : { | 58 | .init.text : { |
59 | _sinittext = .; | 59 | _sinittext = .; |
60 | *(.init.text) | 60 | INIT_TEXT |
61 | _einittext = .; | 61 | _einittext = .; |
62 | } | 62 | } |
63 | .init.data : { *(.init.data) } | 63 | .init.data : { INIT_DATA } |
64 | . = ALIGN(16); | 64 | . = ALIGN(16); |
65 | __setup_start = .; | 65 | __setup_start = .; |
66 | .init.setup : { *(.init.setup) } | 66 | .init.setup : { *(.init.setup) } |
@@ -109,8 +109,8 @@ SECTIONS | |||
109 | 109 | ||
110 | /* Sections to be discarded */ | 110 | /* Sections to be discarded */ |
111 | /DISCARD/ : { | 111 | /DISCARD/ : { |
112 | *(.text.exit) | 112 | EXIT_TEXT |
113 | *(.data.exit) | 113 | EXIT_DATA |
114 | *(.exitcall.exit) | 114 | *(.exitcall.exit) |
115 | } | 115 | } |
116 | 116 | ||
diff --git a/arch/cris/arch-v32/vmlinux.lds.S b/arch/cris/arch-v32/vmlinux.lds.S index b076c134c0bb..fead8c59ea63 100644 --- a/arch/cris/arch-v32/vmlinux.lds.S +++ b/arch/cris/arch-v32/vmlinux.lds.S | |||
@@ -61,10 +61,10 @@ SECTIONS | |||
61 | __init_begin = .; | 61 | __init_begin = .; |
62 | .init.text : { | 62 | .init.text : { |
63 | _sinittext = .; | 63 | _sinittext = .; |
64 | *(.init.text) | 64 | INIT_TEXT |
65 | _einittext = .; | 65 | _einittext = .; |
66 | } | 66 | } |
67 | .init.data : { *(.init.data) } | 67 | .init.data : { INIT_DATA } |
68 | . = ALIGN(16); | 68 | . = ALIGN(16); |
69 | __setup_start = .; | 69 | __setup_start = .; |
70 | .init.setup : { *(.init.setup) } | 70 | .init.setup : { *(.init.setup) } |
@@ -124,8 +124,8 @@ SECTIONS | |||
124 | 124 | ||
125 | /* Sections to be discarded */ | 125 | /* Sections to be discarded */ |
126 | /DISCARD/ : { | 126 | /DISCARD/ : { |
127 | *(.text.exit) | 127 | EXIT_TEXT |
128 | *(.data.exit) | 128 | EXIT_DATA |
129 | *(.exitcall.exit) | 129 | *(.exitcall.exit) |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index a17a81d58bf6..f42b328b1dd0 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S | |||
@@ -28,14 +28,14 @@ SECTIONS | |||
28 | .init.text : { | 28 | .init.text : { |
29 | *(.text.head) | 29 | *(.text.head) |
30 | #ifndef CONFIG_DEBUG_INFO | 30 | #ifndef CONFIG_DEBUG_INFO |
31 | *(.init.text) | 31 | INIT_TEXT |
32 | *(.exit.text) | 32 | EXIT_TEXT |
33 | *(.exit.data) | 33 | EXIT_DATA |
34 | *(.exitcall.exit) | 34 | *(.exitcall.exit) |
35 | #endif | 35 | #endif |
36 | } | 36 | } |
37 | _einittext = .; | 37 | _einittext = .; |
38 | .init.data : { *(.init.data) } | 38 | .init.data : { INIT_DATA } |
39 | 39 | ||
40 | . = ALIGN(8); | 40 | . = ALIGN(8); |
41 | __setup_start = .; | 41 | __setup_start = .; |
@@ -106,8 +106,8 @@ SECTIONS | |||
106 | LOCK_TEXT | 106 | LOCK_TEXT |
107 | #ifdef CONFIG_DEBUG_INFO | 107 | #ifdef CONFIG_DEBUG_INFO |
108 | *( | 108 | *( |
109 | .init.text | 109 | INIT_TEXT |
110 | .exit.text | 110 | EXIT_TEXT |
111 | .exitcall.exit | 111 | .exitcall.exit |
112 | ) | 112 | ) |
113 | #endif | 113 | #endif |
@@ -138,7 +138,7 @@ SECTIONS | |||
138 | .data : { /* Data */ | 138 | .data : { /* Data */ |
139 | DATA_DATA | 139 | DATA_DATA |
140 | *(.data.*) | 140 | *(.data.*) |
141 | *(.exit.data) | 141 | EXIT_DATA |
142 | CONSTRUCTORS | 142 | CONSTRUCTORS |
143 | } | 143 | } |
144 | 144 | ||
diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S index a2e72d495551..43a87b9085b6 100644 --- a/arch/h8300/kernel/vmlinux.lds.S +++ b/arch/h8300/kernel/vmlinux.lds.S | |||
@@ -110,9 +110,9 @@ SECTIONS | |||
110 | . = ALIGN(0x4) ; | 110 | . = ALIGN(0x4) ; |
111 | ___init_begin = .; | 111 | ___init_begin = .; |
112 | __sinittext = .; | 112 | __sinittext = .; |
113 | *(.init.text) | 113 | INIT_TEXT |
114 | __einittext = .; | 114 | __einittext = .; |
115 | *(.init.data) | 115 | INIT_DATA |
116 | . = ALIGN(0x4) ; | 116 | . = ALIGN(0x4) ; |
117 | ___setup_start = .; | 117 | ___setup_start = .; |
118 | *(.init.setup) | 118 | *(.init.setup) |
@@ -124,8 +124,8 @@ SECTIONS | |||
124 | ___con_initcall_start = .; | 124 | ___con_initcall_start = .; |
125 | *(.con_initcall.init) | 125 | *(.con_initcall.init) |
126 | ___con_initcall_end = .; | 126 | ___con_initcall_end = .; |
127 | *(.exit.text) | 127 | EXIT_TEXT |
128 | *(.exit.data) | 128 | EXIT_DATA |
129 | #if defined(CONFIG_BLK_DEV_INITRD) | 129 | #if defined(CONFIG_BLK_DEV_INITRD) |
130 | . = ALIGN(4); | 130 | . = ALIGN(4); |
131 | ___initramfs_start = .; | 131 | ___initramfs_start = .; |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 757e419ebcf8..80622acc95de 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -27,8 +27,8 @@ SECTIONS | |||
27 | { | 27 | { |
28 | /* Sections to be discarded */ | 28 | /* Sections to be discarded */ |
29 | /DISCARD/ : { | 29 | /DISCARD/ : { |
30 | *(.exit.text) | 30 | EXIT_TEXT |
31 | *(.exit.data) | 31 | EXIT_DATA |
32 | *(.exitcall.exit) | 32 | *(.exitcall.exit) |
33 | *(.IA_64.unwind.exit.text) | 33 | *(.IA_64.unwind.exit.text) |
34 | *(.IA_64.unwind_info.exit.text) | 34 | *(.IA_64.unwind_info.exit.text) |
@@ -119,12 +119,12 @@ SECTIONS | |||
119 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) | 119 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) |
120 | { | 120 | { |
121 | _sinittext = .; | 121 | _sinittext = .; |
122 | *(.init.text) | 122 | INIT_TEXT |
123 | _einittext = .; | 123 | _einittext = .; |
124 | } | 124 | } |
125 | 125 | ||
126 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) | 126 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) |
127 | { *(.init.data) } | 127 | { INIT_DATA } |
128 | 128 | ||
129 | #ifdef CONFIG_BLK_DEV_INITRD | 129 | #ifdef CONFIG_BLK_DEV_INITRD |
130 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) | 130 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) |
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S index 942a8c7a4417..41b07854fcc6 100644 --- a/arch/m32r/kernel/vmlinux.lds.S +++ b/arch/m32r/kernel/vmlinux.lds.S | |||
@@ -76,10 +76,10 @@ SECTIONS | |||
76 | __init_begin = .; | 76 | __init_begin = .; |
77 | .init.text : { | 77 | .init.text : { |
78 | _sinittext = .; | 78 | _sinittext = .; |
79 | *(.init.text) | 79 | INIT_TEXT |
80 | _einittext = .; | 80 | _einittext = .; |
81 | } | 81 | } |
82 | .init.data : { *(.init.data) } | 82 | .init.data : { INIT_DATA } |
83 | . = ALIGN(16); | 83 | . = ALIGN(16); |
84 | __setup_start = .; | 84 | __setup_start = .; |
85 | .init.setup : { *(.init.setup) } | 85 | .init.setup : { *(.init.setup) } |
@@ -100,8 +100,8 @@ SECTIONS | |||
100 | .altinstr_replacement : { *(.altinstr_replacement) } | 100 | .altinstr_replacement : { *(.altinstr_replacement) } |
101 | /* .exit.text is discard at runtime, not link time, to deal with references | 101 | /* .exit.text is discard at runtime, not link time, to deal with references |
102 | from .altinstructions and .eh_frame */ | 102 | from .altinstructions and .eh_frame */ |
103 | .exit.text : { *(.exit.text) } | 103 | .exit.text : { EXIT_TEXT } |
104 | .exit.data : { *(.exit.data) } | 104 | .exit.data : { EXIT_DATA } |
105 | 105 | ||
106 | #ifdef CONFIG_BLK_DEV_INITRD | 106 | #ifdef CONFIG_BLK_DEV_INITRD |
107 | . = ALIGN(4096); | 107 | . = ALIGN(4096); |
@@ -124,8 +124,8 @@ SECTIONS | |||
124 | 124 | ||
125 | /* Sections to be discarded */ | 125 | /* Sections to be discarded */ |
126 | /DISCARD/ : { | 126 | /DISCARD/ : { |
127 | *(.exit.text) | 127 | EXIT_TEXT |
128 | *(.exit.data) | 128 | EXIT_DATA |
129 | *(.exitcall.exit) | 129 | *(.exitcall.exit) |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds index 59fe285865ec..7537cc5e6159 100644 --- a/arch/m68k/kernel/vmlinux-std.lds +++ b/arch/m68k/kernel/vmlinux-std.lds | |||
@@ -45,10 +45,10 @@ SECTIONS | |||
45 | __init_begin = .; | 45 | __init_begin = .; |
46 | .init.text : { | 46 | .init.text : { |
47 | _sinittext = .; | 47 | _sinittext = .; |
48 | *(.init.text) | 48 | INIT_TEXT |
49 | _einittext = .; | 49 | _einittext = .; |
50 | } | 50 | } |
51 | .init.data : { *(.init.data) } | 51 | .init.data : { INIT_DATA } |
52 | . = ALIGN(16); | 52 | . = ALIGN(16); |
53 | __setup_start = .; | 53 | __setup_start = .; |
54 | .init.setup : { *(.init.setup) } | 54 | .init.setup : { *(.init.setup) } |
@@ -82,8 +82,8 @@ SECTIONS | |||
82 | 82 | ||
83 | /* Sections to be discarded */ | 83 | /* Sections to be discarded */ |
84 | /DISCARD/ : { | 84 | /DISCARD/ : { |
85 | *(.exit.text) | 85 | EXIT_TEXT |
86 | *(.exit.data) | 86 | EXIT_DATA |
87 | *(.exitcall.exit) | 87 | *(.exitcall.exit) |
88 | } | 88 | } |
89 | 89 | ||
diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds index 4adffefb5c48..cdc313e7c299 100644 --- a/arch/m68k/kernel/vmlinux-sun3.lds +++ b/arch/m68k/kernel/vmlinux-sun3.lds | |||
@@ -38,10 +38,10 @@ SECTIONS | |||
38 | __init_begin = .; | 38 | __init_begin = .; |
39 | .init.text : { | 39 | .init.text : { |
40 | _sinittext = .; | 40 | _sinittext = .; |
41 | *(.init.text) | 41 | INIT_TEXT |
42 | _einittext = .; | 42 | _einittext = .; |
43 | } | 43 | } |
44 | .init.data : { *(.init.data) } | 44 | .init.data : { INIT_DATA } |
45 | . = ALIGN(16); | 45 | . = ALIGN(16); |
46 | __setup_start = .; | 46 | __setup_start = .; |
47 | .init.setup : { *(.init.setup) } | 47 | .init.setup : { *(.init.setup) } |
@@ -77,8 +77,8 @@ __init_begin = .; | |||
77 | 77 | ||
78 | /* Sections to be discarded */ | 78 | /* Sections to be discarded */ |
79 | /DISCARD/ : { | 79 | /DISCARD/ : { |
80 | *(.exit.text) | 80 | EXIT_TEXT |
81 | *(.exit.data) | 81 | EXIT_DATA |
82 | *(.exitcall.exit) | 82 | *(.exitcall.exit) |
83 | } | 83 | } |
84 | 84 | ||
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 07a0055602f4..b44edb08e212 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
@@ -143,9 +143,9 @@ SECTIONS { | |||
143 | . = ALIGN(4096); | 143 | . = ALIGN(4096); |
144 | __init_begin = .; | 144 | __init_begin = .; |
145 | _sinittext = .; | 145 | _sinittext = .; |
146 | *(.init.text) | 146 | INIT_TEXT |
147 | _einittext = .; | 147 | _einittext = .; |
148 | *(.init.data) | 148 | INIT_DATA |
149 | . = ALIGN(16); | 149 | . = ALIGN(16); |
150 | __setup_start = .; | 150 | __setup_start = .; |
151 | *(.init.setup) | 151 | *(.init.setup) |
@@ -170,8 +170,8 @@ SECTIONS { | |||
170 | } > INIT | 170 | } > INIT |
171 | 171 | ||
172 | /DISCARD/ : { | 172 | /DISCARD/ : { |
173 | *(.exit.text) | 173 | EXIT_TEXT |
174 | *(.exit.data) | 174 | EXIT_DATA |
175 | *(.exitcall.exit) | 175 | *(.exitcall.exit) |
176 | } | 176 | } |
177 | 177 | ||
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 5fc2398bdb76..b5470ceb418b 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S | |||
@@ -114,11 +114,11 @@ SECTIONS | |||
114 | __init_begin = .; | 114 | __init_begin = .; |
115 | .init.text : { | 115 | .init.text : { |
116 | _sinittext = .; | 116 | _sinittext = .; |
117 | *(.init.text) | 117 | INIT_TEXT |
118 | _einittext = .; | 118 | _einittext = .; |
119 | } | 119 | } |
120 | .init.data : { | 120 | .init.data : { |
121 | *(.init.data) | 121 | INIT_DATA |
122 | } | 122 | } |
123 | . = ALIGN(16); | 123 | . = ALIGN(16); |
124 | .init.setup : { | 124 | .init.setup : { |
@@ -144,10 +144,10 @@ SECTIONS | |||
144 | * references from .rodata | 144 | * references from .rodata |
145 | */ | 145 | */ |
146 | .exit.text : { | 146 | .exit.text : { |
147 | *(.exit.text) | 147 | EXIT_TEXT |
148 | } | 148 | } |
149 | .exit.data : { | 149 | .exit.data : { |
150 | *(.exit.data) | 150 | EXIT_DATA |
151 | } | 151 | } |
152 | #if defined(CONFIG_BLK_DEV_INITRD) | 152 | #if defined(CONFIG_BLK_DEV_INITRD) |
153 | . = ALIGN(_PAGE_SIZE); | 153 | . = ALIGN(_PAGE_SIZE); |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index 40d0ff9b81ab..50b4a3a25d0a 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -172,11 +172,11 @@ SECTIONS | |||
172 | __init_begin = .; | 172 | __init_begin = .; |
173 | .init.text : { | 173 | .init.text : { |
174 | _sinittext = .; | 174 | _sinittext = .; |
175 | *(.init.text) | 175 | INIT_TEXT |
176 | _einittext = .; | 176 | _einittext = .; |
177 | } | 177 | } |
178 | .init.data : { | 178 | .init.data : { |
179 | *(.init.data) | 179 | INIT_DATA |
180 | } | 180 | } |
181 | . = ALIGN(16); | 181 | . = ALIGN(16); |
182 | .init.setup : { | 182 | .init.setup : { |
@@ -215,10 +215,10 @@ SECTIONS | |||
215 | * from .altinstructions and .eh_frame | 215 | * from .altinstructions and .eh_frame |
216 | */ | 216 | */ |
217 | .exit.text : { | 217 | .exit.text : { |
218 | *(.exit.text) | 218 | EXIT_TEXT |
219 | } | 219 | } |
220 | .exit.data : { | 220 | .exit.data : { |
221 | *(.exit.data) | 221 | EXIT_DATA |
222 | } | 222 | } |
223 | #ifdef CONFIG_BLK_DEV_INITRD | 223 | #ifdef CONFIG_BLK_DEV_INITRD |
224 | . = ALIGN(PAGE_SIZE); | 224 | . = ALIGN(PAGE_SIZE); |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index f66fa5d966b0..0afb9e31d2a0 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -23,7 +23,7 @@ SECTIONS | |||
23 | /* Sections to be discarded. */ | 23 | /* Sections to be discarded. */ |
24 | /DISCARD/ : { | 24 | /DISCARD/ : { |
25 | *(.exitcall.exit) | 25 | *(.exitcall.exit) |
26 | *(.exit.data) | 26 | EXIT_DATA |
27 | } | 27 | } |
28 | 28 | ||
29 | . = KERNELBASE; | 29 | . = KERNELBASE; |
@@ -76,17 +76,19 @@ SECTIONS | |||
76 | 76 | ||
77 | .init.text : { | 77 | .init.text : { |
78 | _sinittext = .; | 78 | _sinittext = .; |
79 | *(.init.text) | 79 | INIT_TEXT |
80 | _einittext = .; | 80 | _einittext = .; |
81 | } | 81 | } |
82 | 82 | ||
83 | /* .exit.text is discarded at runtime, not link time, | 83 | /* .exit.text is discarded at runtime, not link time, |
84 | * to deal with references from __bug_table | 84 | * to deal with references from __bug_table |
85 | */ | 85 | */ |
86 | .exit.text : { *(.exit.text) } | 86 | .exit.text : { |
87 | EXIT_TEXT | ||
88 | } | ||
87 | 89 | ||
88 | .init.data : { | 90 | .init.data : { |
89 | *(.init.data); | 91 | INIT_DATA |
90 | __vtop_table_begin = .; | 92 | __vtop_table_begin = .; |
91 | *(.vtop_fixup); | 93 | *(.vtop_fixup); |
92 | __vtop_table_end = .; | 94 | __vtop_table_end = .; |
diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S index 98c1212674f6..52b64fcbdfc5 100644 --- a/arch/ppc/kernel/vmlinux.lds.S +++ b/arch/ppc/kernel/vmlinux.lds.S | |||
@@ -97,14 +97,14 @@ SECTIONS | |||
97 | __init_begin = .; | 97 | __init_begin = .; |
98 | .init.text : { | 98 | .init.text : { |
99 | _sinittext = .; | 99 | _sinittext = .; |
100 | *(.init.text) | 100 | INIT_TEXT |
101 | _einittext = .; | 101 | _einittext = .; |
102 | } | 102 | } |
103 | /* .exit.text is discarded at runtime, not link time, | 103 | /* .exit.text is discarded at runtime, not link time, |
104 | to deal with references from __bug_table */ | 104 | to deal with references from __bug_table */ |
105 | .exit.text : { *(.exit.text) } | 105 | .exit.text : { EXIT_TEXT } |
106 | .init.data : { | 106 | .init.data : { |
107 | *(.init.data); | 107 | INIT_DATA |
108 | __vtop_table_begin = .; | 108 | __vtop_table_begin = .; |
109 | *(.vtop_fixup); | 109 | *(.vtop_fixup); |
110 | __vtop_table_end = .; | 110 | __vtop_table_end = .; |
@@ -164,6 +164,6 @@ SECTIONS | |||
164 | /* Sections to be discarded. */ | 164 | /* Sections to be discarded. */ |
165 | /DISCARD/ : { | 165 | /DISCARD/ : { |
166 | *(.exitcall.exit) | 166 | *(.exitcall.exit) |
167 | *(.exit.data) | 167 | EXIT_DATA |
168 | } | 168 | } |
169 | } | 169 | } |
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index 936159199346..7d43c3cd3ef3 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S | |||
@@ -97,7 +97,7 @@ SECTIONS | |||
97 | __init_begin = .; | 97 | __init_begin = .; |
98 | .init.text : { | 98 | .init.text : { |
99 | _sinittext = .; | 99 | _sinittext = .; |
100 | *(.init.text) | 100 | INIT_TEXT |
101 | _einittext = .; | 101 | _einittext = .; |
102 | } | 102 | } |
103 | /* | 103 | /* |
@@ -105,11 +105,11 @@ SECTIONS | |||
105 | * to deal with references from __bug_table | 105 | * to deal with references from __bug_table |
106 | */ | 106 | */ |
107 | .exit.text : { | 107 | .exit.text : { |
108 | *(.exit.text) | 108 | EXIT_TEXT |
109 | } | 109 | } |
110 | 110 | ||
111 | .init.data : { | 111 | .init.data : { |
112 | *(.init.data) | 112 | INIT_DATA |
113 | } | 113 | } |
114 | . = ALIGN(0x100); | 114 | . = ALIGN(0x100); |
115 | .init.setup : { | 115 | .init.setup : { |
@@ -156,7 +156,7 @@ SECTIONS | |||
156 | 156 | ||
157 | /* Sections to be discarded */ | 157 | /* Sections to be discarded */ |
158 | /DISCARD/ : { | 158 | /DISCARD/ : { |
159 | *(.exit.data) | 159 | EXIT_DATA |
160 | *(.exitcall.exit) | 160 | *(.exitcall.exit) |
161 | } | 161 | } |
162 | 162 | ||
diff --git a/arch/sh/kernel/vmlinux_32.lds.S b/arch/sh/kernel/vmlinux_32.lds.S index d549fac6d3e7..c7113786ecd4 100644 --- a/arch/sh/kernel/vmlinux_32.lds.S +++ b/arch/sh/kernel/vmlinux_32.lds.S | |||
@@ -84,9 +84,9 @@ SECTIONS | |||
84 | . = ALIGN(PAGE_SIZE); /* Init code and data */ | 84 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
85 | __init_begin = .; | 85 | __init_begin = .; |
86 | _sinittext = .; | 86 | _sinittext = .; |
87 | .init.text : { *(.init.text) } | 87 | .init.text : { INIT_TEXT } |
88 | _einittext = .; | 88 | _einittext = .; |
89 | .init.data : { *(.init.data) } | 89 | .init.data : { INIT_DATA } |
90 | 90 | ||
91 | . = ALIGN(16); | 91 | . = ALIGN(16); |
92 | __setup_start = .; | 92 | __setup_start = .; |
@@ -122,8 +122,8 @@ SECTIONS | |||
122 | * .exit.text is discarded at runtime, not link time, to deal with | 122 | * .exit.text is discarded at runtime, not link time, to deal with |
123 | * references from __bug_table | 123 | * references from __bug_table |
124 | */ | 124 | */ |
125 | .exit.text : { *(.exit.text) } | 125 | .exit.text : { EXIT_TEXT } |
126 | .exit.data : { *(.exit.data) } | 126 | .exit.data : { EXIT_DATA } |
127 | 127 | ||
128 | . = ALIGN(PAGE_SIZE); | 128 | . = ALIGN(PAGE_SIZE); |
129 | .bss : { | 129 | .bss : { |
diff --git a/arch/sh/kernel/vmlinux_64.lds.S b/arch/sh/kernel/vmlinux_64.lds.S index 2fd0f7401484..3f1bd6392bb3 100644 --- a/arch/sh/kernel/vmlinux_64.lds.S +++ b/arch/sh/kernel/vmlinux_64.lds.S | |||
@@ -96,9 +96,9 @@ SECTIONS | |||
96 | . = ALIGN(PAGE_SIZE); /* Init code and data */ | 96 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
97 | __init_begin = .; | 97 | __init_begin = .; |
98 | _sinittext = .; | 98 | _sinittext = .; |
99 | .init.text : C_PHYS(.init.text) { *(.init.text) } | 99 | .init.text : C_PHYS(.init.text) { INIT_TEXT } |
100 | _einittext = .; | 100 | _einittext = .; |
101 | .init.data : C_PHYS(.init.data) { *(.init.data) } | 101 | .init.data : C_PHYS(.init.data) { INIT_DATA } |
102 | . = ALIGN(L1_CACHE_BYTES); /* Better if Cache Line aligned */ | 102 | . = ALIGN(L1_CACHE_BYTES); /* Better if Cache Line aligned */ |
103 | __setup_start = .; | 103 | __setup_start = .; |
104 | .init.setup : C_PHYS(.init.setup) { *(.init.setup) } | 104 | .init.setup : C_PHYS(.init.setup) { *(.init.setup) } |
@@ -134,8 +134,8 @@ SECTIONS | |||
134 | * .exit.text is discarded at runtime, not link time, to deal with | 134 | * .exit.text is discarded at runtime, not link time, to deal with |
135 | * references from __bug_table | 135 | * references from __bug_table |
136 | */ | 136 | */ |
137 | .exit.text : C_PHYS(.exit.text) { *(.exit.text) } | 137 | .exit.text : C_PHYS(.exit.text) { EXIT_TEXT } |
138 | .exit.data : C_PHYS(.exit.data) { *(.exit.data) } | 138 | .exit.data : C_PHYS(.exit.data) { EXIT_DATA } |
139 | 139 | ||
140 | . = ALIGN(PAGE_SIZE); | 140 | . = ALIGN(PAGE_SIZE); |
141 | .bss : C_PHYS(.bss) { | 141 | .bss : C_PHYS(.bss) { |
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index a8b4200f9cc3..216147d6e61f 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S | |||
@@ -48,12 +48,12 @@ SECTIONS | |||
48 | __init_begin = .; | 48 | __init_begin = .; |
49 | .init.text : { | 49 | .init.text : { |
50 | _sinittext = .; | 50 | _sinittext = .; |
51 | *(.init.text) | 51 | INIT_TEXT |
52 | _einittext = .; | 52 | _einittext = .; |
53 | } | 53 | } |
54 | __init_text_end = .; | 54 | __init_text_end = .; |
55 | .init.data : { | 55 | .init.data : { |
56 | *(.init.data) | 56 | INIT_DATA |
57 | } | 57 | } |
58 | . = ALIGN(16); | 58 | . = ALIGN(16); |
59 | .init.setup : { | 59 | .init.setup : { |
@@ -102,8 +102,8 @@ SECTIONS | |||
102 | _end = . ; | 102 | _end = . ; |
103 | PROVIDE (end = .); | 103 | PROVIDE (end = .); |
104 | /DISCARD/ : { | 104 | /DISCARD/ : { |
105 | *(.exit.text) | 105 | EXIT_TEXT |
106 | *(.exit.data) | 106 | EXIT_DATA |
107 | *(.exitcall.exit) | 107 | *(.exitcall.exit) |
108 | } | 108 | } |
109 | 109 | ||
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S index 9fcd503bc04a..01f809617e5e 100644 --- a/arch/sparc64/kernel/vmlinux.lds.S +++ b/arch/sparc64/kernel/vmlinux.lds.S | |||
@@ -56,11 +56,11 @@ SECTIONS | |||
56 | .init.text : { | 56 | .init.text : { |
57 | __init_begin = .; | 57 | __init_begin = .; |
58 | _sinittext = .; | 58 | _sinittext = .; |
59 | *(.init.text) | 59 | INIT_TEXT |
60 | _einittext = .; | 60 | _einittext = .; |
61 | } | 61 | } |
62 | .init.data : { | 62 | .init.data : { |
63 | *(.init.data) | 63 | INIT_DATA |
64 | } | 64 | } |
65 | . = ALIGN(16); | 65 | . = ALIGN(16); |
66 | .init.setup : { | 66 | .init.setup : { |
@@ -137,8 +137,8 @@ SECTIONS | |||
137 | PROVIDE (end = .); | 137 | PROVIDE (end = .); |
138 | 138 | ||
139 | /DISCARD/ : { | 139 | /DISCARD/ : { |
140 | *(.exit.text) | 140 | EXIT_TEXT |
141 | *(.exit.data) | 141 | EXIT_DATA |
142 | *(.exitcall.exit) | 142 | *(.exitcall.exit) |
143 | } | 143 | } |
144 | 144 | ||
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S index 3866f4960f04..26090b7f323e 100644 --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S | |||
@@ -17,7 +17,7 @@ SECTIONS | |||
17 | __init_begin = .; | 17 | __init_begin = .; |
18 | .init.text : { | 18 | .init.text : { |
19 | _sinittext = .; | 19 | _sinittext = .; |
20 | *(.init.text) | 20 | INIT_TEXT |
21 | _einittext = .; | 21 | _einittext = .; |
22 | } | 22 | } |
23 | 23 | ||
@@ -84,7 +84,7 @@ SECTIONS | |||
84 | 84 | ||
85 | #include "asm/common.lds.S" | 85 | #include "asm/common.lds.S" |
86 | 86 | ||
87 | init.data : { *(.init.data) } | 87 | init.data : { INIT_DATA } |
88 | 88 | ||
89 | /* Ensure the __preinit_array_start label is properly aligned. We | 89 | /* Ensure the __preinit_array_start label is properly aligned. We |
90 | could instead move the label definition inside the section, but | 90 | could instead move the label definition inside the section, but |
diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S index 13df191e2b41..5828c1d54505 100644 --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S | |||
@@ -23,7 +23,7 @@ SECTIONS | |||
23 | __init_begin = .; | 23 | __init_begin = .; |
24 | .init.text : { | 24 | .init.text : { |
25 | _sinittext = .; | 25 | _sinittext = .; |
26 | *(.init.text) | 26 | INIT_TEXT |
27 | _einittext = .; | 27 | _einittext = .; |
28 | } | 28 | } |
29 | . = ALIGN(4096); | 29 | . = ALIGN(4096); |
@@ -48,7 +48,7 @@ SECTIONS | |||
48 | 48 | ||
49 | #include "asm/common.lds.S" | 49 | #include "asm/common.lds.S" |
50 | 50 | ||
51 | init.data : { *(init.data) } | 51 | init.data : { INIT_DATA } |
52 | .data : | 52 | .data : |
53 | { | 53 | { |
54 | . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ | 54 | . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ |
diff --git a/arch/v850/kernel/vmlinux.lds.S b/arch/v850/kernel/vmlinux.lds.S index 6172599b4ce2..d08cd1d27f27 100644 --- a/arch/v850/kernel/vmlinux.lds.S +++ b/arch/v850/kernel/vmlinux.lds.S | |||
@@ -114,7 +114,7 @@ | |||
114 | #define DATA_CONTENTS \ | 114 | #define DATA_CONTENTS \ |
115 | __sdata = . ; \ | 115 | __sdata = . ; \ |
116 | DATA_DATA \ | 116 | DATA_DATA \ |
117 | *(.exit.data) /* 2.5 convention */ \ | 117 | EXIT_DATA /* 2.5 convention */ \ |
118 | *(.data.exit) /* 2.4 convention */ \ | 118 | *(.data.exit) /* 2.4 convention */ \ |
119 | . = ALIGN (16) ; \ | 119 | . = ALIGN (16) ; \ |
120 | *(.data.cacheline_aligned) \ | 120 | *(.data.cacheline_aligned) \ |
@@ -157,9 +157,9 @@ | |||
157 | . = ALIGN (4096) ; \ | 157 | . = ALIGN (4096) ; \ |
158 | __init_start = . ; \ | 158 | __init_start = . ; \ |
159 | __sinittext = .; \ | 159 | __sinittext = .; \ |
160 | *(.init.text) /* 2.5 convention */ \ | 160 | INIT_TEXT /* 2.5 convention */ \ |
161 | __einittext = .; \ | 161 | __einittext = .; \ |
162 | *(.init.data) \ | 162 | INIT_DATA \ |
163 | *(.text.init) /* 2.4 convention */ \ | 163 | *(.text.init) /* 2.4 convention */ \ |
164 | *(.data.init) \ | 164 | *(.data.init) \ |
165 | INITCALL_CONTENTS \ | 165 | INITCALL_CONTENTS \ |
@@ -170,7 +170,7 @@ | |||
170 | #define ROMK_INIT_RAM_CONTENTS \ | 170 | #define ROMK_INIT_RAM_CONTENTS \ |
171 | . = ALIGN (4096) ; \ | 171 | . = ALIGN (4096) ; \ |
172 | __init_start = . ; \ | 172 | __init_start = . ; \ |
173 | *(.init.data) /* 2.5 convention */ \ | 173 | INIT_DATA /* 2.5 convention */ \ |
174 | *(.data.init) /* 2.4 convention */ \ | 174 | *(.data.init) /* 2.4 convention */ \ |
175 | __init_end = . ; \ | 175 | __init_end = . ; \ |
176 | . = ALIGN (4096) ; | 176 | . = ALIGN (4096) ; |
@@ -179,7 +179,7 @@ | |||
179 | should go into ROM. */ | 179 | should go into ROM. */ |
180 | #define ROMK_INIT_ROM_CONTENTS \ | 180 | #define ROMK_INIT_ROM_CONTENTS \ |
181 | _sinittext = .; \ | 181 | _sinittext = .; \ |
182 | *(.init.text) /* 2.5 convention */ \ | 182 | INIT_TEXT /* 2.5 convention */ \ |
183 | _einittext = .; \ | 183 | _einittext = .; \ |
184 | *(.text.init) /* 2.4 convention */ \ | 184 | *(.text.init) /* 2.4 convention */ \ |
185 | INITCALL_CONTENTS \ | 185 | INITCALL_CONTENTS \ |
diff --git a/arch/x86/kernel/vmlinux_32.lds.S b/arch/x86/kernel/vmlinux_32.lds.S index 7d72cce00529..84c913f38f98 100644 --- a/arch/x86/kernel/vmlinux_32.lds.S +++ b/arch/x86/kernel/vmlinux_32.lds.S | |||
@@ -131,10 +131,12 @@ SECTIONS | |||
131 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { | 131 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { |
132 | __init_begin = .; | 132 | __init_begin = .; |
133 | _sinittext = .; | 133 | _sinittext = .; |
134 | *(.init.text) | 134 | INIT_TEXT |
135 | _einittext = .; | 135 | _einittext = .; |
136 | } | 136 | } |
137 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { *(.init.data) } | 137 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { |
138 | INIT_DATA | ||
139 | } | ||
138 | . = ALIGN(16); | 140 | . = ALIGN(16); |
139 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { | 141 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { |
140 | __setup_start = .; | 142 | __setup_start = .; |
@@ -169,8 +171,12 @@ SECTIONS | |||
169 | } | 171 | } |
170 | /* .exit.text is discard at runtime, not link time, to deal with references | 172 | /* .exit.text is discard at runtime, not link time, to deal with references |
171 | from .altinstructions and .eh_frame */ | 173 | from .altinstructions and .eh_frame */ |
172 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } | 174 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { |
173 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } | 175 | EXIT_TEXT |
176 | } | ||
177 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { | ||
178 | EXIT_DATA | ||
179 | } | ||
174 | #if defined(CONFIG_BLK_DEV_INITRD) | 180 | #if defined(CONFIG_BLK_DEV_INITRD) |
175 | . = ALIGN(4096); | 181 | . = ALIGN(4096); |
176 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { | 182 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { |
diff --git a/arch/x86/kernel/vmlinux_64.lds.S b/arch/x86/kernel/vmlinux_64.lds.S index ba8ea97abd21..ea5386944e67 100644 --- a/arch/x86/kernel/vmlinux_64.lds.S +++ b/arch/x86/kernel/vmlinux_64.lds.S | |||
@@ -155,12 +155,15 @@ SECTIONS | |||
155 | __init_begin = .; | 155 | __init_begin = .; |
156 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { | 156 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { |
157 | _sinittext = .; | 157 | _sinittext = .; |
158 | *(.init.text) | 158 | INIT_TEXT |
159 | _einittext = .; | 159 | _einittext = .; |
160 | } | 160 | } |
161 | __initdata_begin = .; | 161 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { |
162 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { *(.init.data) } | 162 | __initdata_begin = .; |
163 | __initdata_end = .; | 163 | INIT_DATA |
164 | __initdata_end = .; | ||
165 | } | ||
166 | |||
164 | . = ALIGN(16); | 167 | . = ALIGN(16); |
165 | __setup_start = .; | 168 | __setup_start = .; |
166 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup) } | 169 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup) } |
@@ -187,8 +190,12 @@ SECTIONS | |||
187 | } | 190 | } |
188 | /* .exit.text is discard at runtime, not link time, to deal with references | 191 | /* .exit.text is discard at runtime, not link time, to deal with references |
189 | from .altinstructions and .eh_frame */ | 192 | from .altinstructions and .eh_frame */ |
190 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } | 193 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { |
191 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } | 194 | EXIT_TEXT |
195 | } | ||
196 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { | ||
197 | EXIT_DATA | ||
198 | } | ||
192 | 199 | ||
193 | /* vdso blob that is mapped into user space */ | 200 | /* vdso blob that is mapped into user space */ |
194 | vdso_start = . ; | 201 | vdso_start = . ; |
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index ac4ed52034db..7d0f55a4982d 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S | |||
@@ -136,13 +136,13 @@ SECTIONS | |||
136 | __init_begin = .; | 136 | __init_begin = .; |
137 | .init.text : { | 137 | .init.text : { |
138 | _sinittext = .; | 138 | _sinittext = .; |
139 | *(.init.literal) *(.init.text) | 139 | *(.init.literal) INIT_TEXT |
140 | _einittext = .; | 140 | _einittext = .; |
141 | } | 141 | } |
142 | 142 | ||
143 | .init.data : | 143 | .init.data : |
144 | { | 144 | { |
145 | *(.init.data) | 145 | INIT_DATA |
146 | . = ALIGN(0x4); | 146 | . = ALIGN(0x4); |
147 | __tagtable_begin = .; | 147 | __tagtable_begin = .; |
148 | *(.taglist) | 148 | *(.taglist) |
@@ -278,8 +278,9 @@ SECTIONS | |||
278 | /* Sections to be discarded */ | 278 | /* Sections to be discarded */ |
279 | /DISCARD/ : | 279 | /DISCARD/ : |
280 | { | 280 | { |
281 | *(.exit.literal .exit.text) | 281 | *(.exit.literal) |
282 | *(.exit.data) | 282 | EXIT_TEXT |
283 | EXIT_DATA | ||
283 | *(.exitcall.exit) | 284 | *(.exitcall.exit) |
284 | } | 285 | } |
285 | 286 | ||
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 9f584cc5c5fb..ae0166e83490 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -183,6 +183,13 @@ | |||
183 | *(.kprobes.text) \ | 183 | *(.kprobes.text) \ |
184 | VMLINUX_SYMBOL(__kprobes_text_end) = .; | 184 | VMLINUX_SYMBOL(__kprobes_text_end) = .; |
185 | 185 | ||
186 | /* init and exit section handling */ | ||
187 | #define INIT_TEXT *(.init.text) | ||
188 | #define INIT_DATA *(.init.data) | ||
189 | #define EXIT_TEXT *(.exit.text) | ||
190 | #define EXIT_DATA *(.exit.data) | ||
191 | |||
192 | |||
186 | /* DWARF debug sections. | 193 | /* DWARF debug sections. |
187 | Symbols in the DWARF debugging sections are relative to | 194 | Symbols in the DWARF debugging sections are relative to |
188 | the beginning of the section so we begin them at 0. */ | 195 | the beginning of the section so we begin them at 0. */ |