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 | ||
