diff options
author | Jiang Liu <liuj97@gmail.com> | 2013-07-03 18:03:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 19:07:34 -0400 |
commit | a214a8c68bcdef2fb0803425f7fe36fe41030d3f (patch) | |
tree | cc5ca146a1770ca54bf2d6f5436df935e1223602 | |
parent | 40a3b8df7be3b813cef7e32f74dea398274c2d47 (diff) |
UML: normalize global variables exported by vmlinux.lds
Normalize global variables exported by vmlinux.lds to conform usage
guidelines from include/asm-generic/sections.h.
1) Use _text to mark the start of the kernel image including the head
text, and _stext to mark the start of the .text section.
2) Export mandatory global variables __bss_stop.
3) Adjust __init_begin and __init_end to avoid acrossing .text and
.data sections.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/um/include/asm/common.lds.S | 1 | ||||
-rw-r--r-- | arch/um/kernel/dyn.lds.S | 6 | ||||
-rw-r--r-- | arch/um/kernel/uml.lds.S | 7 |
3 files changed, 9 insertions, 5 deletions
diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S index 4938de5512d2..1dd5bd8a8c59 100644 --- a/arch/um/include/asm/common.lds.S +++ b/arch/um/include/asm/common.lds.S | |||
@@ -57,7 +57,6 @@ | |||
57 | *(.uml.initcall.init) | 57 | *(.uml.initcall.init) |
58 | __uml_initcall_end = .; | 58 | __uml_initcall_end = .; |
59 | } | 59 | } |
60 | __init_end = .; | ||
61 | 60 | ||
62 | SECURITY_INIT | 61 | SECURITY_INIT |
63 | 62 | ||
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S index fb8fd6fb6563..adde088aeeff 100644 --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S | |||
@@ -14,8 +14,6 @@ SECTIONS | |||
14 | __binary_start = .; | 14 | __binary_start = .; |
15 | . = ALIGN(4096); /* Init code and data */ | 15 | . = ALIGN(4096); /* Init code and data */ |
16 | _text = .; | 16 | _text = .; |
17 | _stext = .; | ||
18 | __init_begin = .; | ||
19 | INIT_TEXT_SECTION(PAGE_SIZE) | 17 | INIT_TEXT_SECTION(PAGE_SIZE) |
20 | 18 | ||
21 | . = ALIGN(PAGE_SIZE); | 19 | . = ALIGN(PAGE_SIZE); |
@@ -67,6 +65,7 @@ SECTIONS | |||
67 | } =0x90909090 | 65 | } =0x90909090 |
68 | .plt : { *(.plt) } | 66 | .plt : { *(.plt) } |
69 | .text : { | 67 | .text : { |
68 | _stext = .; | ||
70 | TEXT_TEXT | 69 | TEXT_TEXT |
71 | SCHED_TEXT | 70 | SCHED_TEXT |
72 | LOCK_TEXT | 71 | LOCK_TEXT |
@@ -91,7 +90,9 @@ SECTIONS | |||
91 | 90 | ||
92 | #include <asm/common.lds.S> | 91 | #include <asm/common.lds.S> |
93 | 92 | ||
93 | __init_begin = .; | ||
94 | init.data : { INIT_DATA } | 94 | init.data : { INIT_DATA } |
95 | __init_end = .; | ||
95 | 96 | ||
96 | /* Ensure the __preinit_array_start label is properly aligned. We | 97 | /* Ensure the __preinit_array_start label is properly aligned. We |
97 | could instead move the label definition inside the section, but | 98 | could instead move the label definition inside the section, but |
@@ -155,6 +156,7 @@ SECTIONS | |||
155 | . = ALIGN(32 / 8); | 156 | . = ALIGN(32 / 8); |
156 | . = ALIGN(32 / 8); | 157 | . = ALIGN(32 / 8); |
157 | } | 158 | } |
159 | __bss_stop = .; | ||
158 | _end = .; | 160 | _end = .; |
159 | PROVIDE (end = .); | 161 | PROVIDE (end = .); |
160 | 162 | ||
diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S index ff65fb4f1a95..6899195602b7 100644 --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S | |||
@@ -20,13 +20,12 @@ SECTIONS | |||
20 | . = START + SIZEOF_HEADERS; | 20 | . = START + SIZEOF_HEADERS; |
21 | 21 | ||
22 | _text = .; | 22 | _text = .; |
23 | _stext = .; | ||
24 | __init_begin = .; | ||
25 | INIT_TEXT_SECTION(0) | 23 | INIT_TEXT_SECTION(0) |
26 | . = ALIGN(PAGE_SIZE); | 24 | . = ALIGN(PAGE_SIZE); |
27 | 25 | ||
28 | .text : | 26 | .text : |
29 | { | 27 | { |
28 | _stext = .; | ||
30 | TEXT_TEXT | 29 | TEXT_TEXT |
31 | SCHED_TEXT | 30 | SCHED_TEXT |
32 | LOCK_TEXT | 31 | LOCK_TEXT |
@@ -62,7 +61,10 @@ SECTIONS | |||
62 | 61 | ||
63 | #include <asm/common.lds.S> | 62 | #include <asm/common.lds.S> |
64 | 63 | ||
64 | __init_begin = .; | ||
65 | init.data : { INIT_DATA } | 65 | init.data : { INIT_DATA } |
66 | __init_end = .; | ||
67 | |||
66 | .data : | 68 | .data : |
67 | { | 69 | { |
68 | INIT_TASK_DATA(KERNEL_STACK_SIZE) | 70 | INIT_TASK_DATA(KERNEL_STACK_SIZE) |
@@ -97,6 +99,7 @@ SECTIONS | |||
97 | PROVIDE(_bss_start = .); | 99 | PROVIDE(_bss_start = .); |
98 | SBSS(0) | 100 | SBSS(0) |
99 | BSS(0) | 101 | BSS(0) |
102 | __bss_stop = .; | ||
100 | _end = .; | 103 | _end = .; |
101 | PROVIDE (end = .); | 104 | PROVIDE (end = .); |
102 | 105 | ||