Commit 01ba2bdc authored by Sam Ravnborg's avatar Sam Ravnborg

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: default avatarSam Ravnborg <sam@ravnborg.org>
parent 6c5bd235
...@@ -46,11 +46,11 @@ SECTIONS ...@@ -46,11 +46,11 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(16); . = ALIGN(16);
...@@ -136,8 +136,8 @@ SECTIONS ...@@ -136,8 +136,8 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -30,7 +30,7 @@ SECTIONS ...@@ -30,7 +30,7 @@ SECTIONS
} }
.init : { /* Init code and data */ .init : { /* Init code and data */
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
__proc_info_begin = .; __proc_info_begin = .;
*(.proc.info.init) *(.proc.info.init)
...@@ -70,15 +70,15 @@ SECTIONS ...@@ -70,15 +70,15 @@ SECTIONS
__per_cpu_end = .; __per_cpu_end = .;
#ifndef CONFIG_XIP_KERNEL #ifndef CONFIG_XIP_KERNEL
__init_begin = _stext; __init_begin = _stext;
*(.init.data) INIT_DATA
. = ALIGN(4096); . = ALIGN(4096);
__init_end = .; __init_end = .;
#endif #endif
} }
/DISCARD/ : { /* Exit code and data */ /DISCARD/ : { /* Exit code and data */
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
#ifndef CONFIG_MMU #ifndef CONFIG_MMU
*(.fixup) *(.fixup)
...@@ -130,7 +130,7 @@ SECTIONS ...@@ -130,7 +130,7 @@ SECTIONS
#ifdef CONFIG_XIP_KERNEL #ifdef CONFIG_XIP_KERNEL
. = ALIGN(4096); . = ALIGN(4096);
__init_begin = .; __init_begin = .;
*(.init.data) INIT_DATA
. = ALIGN(4096); . = ALIGN(4096);
__init_end = .; __init_end = .;
#endif #endif
......
...@@ -27,19 +27,19 @@ SECTIONS ...@@ -27,19 +27,19 @@ SECTIONS
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
*(.text.reset) *(.text.reset)
*(.init.text) INIT_TEXT
/* /*
* .exit.text is discarded at runtime, not * .exit.text is discarded at runtime, not
* link time, to deal with references from * link time, to deal with references from
* __bug_table * __bug_table
*/ */
*(.exit.text) EXIT_TEXT
_einittext = .; _einittext = .;
. = ALIGN(4); . = ALIGN(4);
__tagtable_begin = .; __tagtable_begin = .;
*(.taglist.init) *(.taglist.init)
__tagtable_end = .; __tagtable_end = .;
*(.init.data) INIT_DATA
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
*(.init.setup) *(.init.setup)
...@@ -135,7 +135,7 @@ SECTIONS ...@@ -135,7 +135,7 @@ SECTIONS
* thrown away, as cleanup code is never called unless it's a module. * thrown away, as cleanup code is never called unless it's a module.
*/ */
/DISCARD/ : { /DISCARD/ : {
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -91,13 +91,13 @@ SECTIONS ...@@ -91,13 +91,13 @@ SECTIONS
{ {
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__sinittext = .; __sinittext = .;
*(.init.text) INIT_TEXT
__einittext = .; __einittext = .;
} }
.init.data : .init.data :
{ {
. = ALIGN(16); . = ALIGN(16);
*(.init.data) INIT_DATA
} }
.init.setup : .init.setup :
{ {
...@@ -198,8 +198,8 @@ SECTIONS ...@@ -198,8 +198,8 @@ SECTIONS
/DISCARD/ : /DISCARD/ :
{ {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
} }
...@@ -57,10 +57,10 @@ SECTIONS ...@@ -57,10 +57,10 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
...@@ -109,8 +109,8 @@ SECTIONS ...@@ -109,8 +109,8 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.text.exit) EXIT_TEXT
*(.data.exit) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -61,10 +61,10 @@ SECTIONS ...@@ -61,10 +61,10 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
...@@ -124,8 +124,8 @@ SECTIONS ...@@ -124,8 +124,8 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.text.exit) EXIT_TEXT
*(.data.exit) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -28,14 +28,14 @@ SECTIONS ...@@ -28,14 +28,14 @@ SECTIONS
.init.text : { .init.text : {
*(.text.head) *(.text.head)
#ifndef CONFIG_DEBUG_INFO #ifndef CONFIG_DEBUG_INFO
*(.init.text) INIT_TEXT
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
#endif #endif
} }
_einittext = .; _einittext = .;
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(8); . = ALIGN(8);
__setup_start = .; __setup_start = .;
...@@ -106,8 +106,8 @@ SECTIONS ...@@ -106,8 +106,8 @@ SECTIONS
LOCK_TEXT LOCK_TEXT
#ifdef CONFIG_DEBUG_INFO #ifdef CONFIG_DEBUG_INFO
*( *(
.init.text INIT_TEXT
.exit.text EXIT_TEXT
.exitcall.exit .exitcall.exit
) )
#endif #endif
...@@ -138,7 +138,7 @@ SECTIONS ...@@ -138,7 +138,7 @@ SECTIONS
.data : { /* Data */ .data : { /* Data */
DATA_DATA DATA_DATA
*(.data.*) *(.data.*)
*(.exit.data) EXIT_DATA
CONSTRUCTORS CONSTRUCTORS
} }
......
...@@ -110,9 +110,9 @@ SECTIONS ...@@ -110,9 +110,9 @@ SECTIONS
. = ALIGN(0x4) ; . = ALIGN(0x4) ;
___init_begin = .; ___init_begin = .;
__sinittext = .; __sinittext = .;
*(.init.text) INIT_TEXT
__einittext = .; __einittext = .;
*(.init.data) INIT_DATA
. = ALIGN(0x4) ; . = ALIGN(0x4) ;
___setup_start = .; ___setup_start = .;
*(.init.setup) *(.init.setup)
...@@ -124,8 +124,8 @@ SECTIONS ...@@ -124,8 +124,8 @@ SECTIONS
___con_initcall_start = .; ___con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
___con_initcall_end = .; ___con_initcall_end = .;
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
#if defined(CONFIG_BLK_DEV_INITRD) #if defined(CONFIG_BLK_DEV_INITRD)
. = ALIGN(4); . = ALIGN(4);
___initramfs_start = .; ___initramfs_start = .;
......
...@@ -27,8 +27,8 @@ SECTIONS ...@@ -27,8 +27,8 @@ SECTIONS
{ {
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
*(.IA_64.unwind.exit.text) *(.IA_64.unwind.exit.text)
*(.IA_64.unwind_info.exit.text) *(.IA_64.unwind_info.exit.text)
...@@ -119,12 +119,12 @@ SECTIONS ...@@ -119,12 +119,12 @@ SECTIONS
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) .init.text : AT(ADDR(.init.text) - LOAD_OFFSET)
{ {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) .init.data : AT(ADDR(.init.data) - LOAD_OFFSET)
{ *(.init.data) } { INIT_DATA }
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET)
......
...@@ -76,10 +76,10 @@ SECTIONS ...@@ -76,10 +76,10 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
...@@ -100,8 +100,8 @@ SECTIONS ...@@ -100,8 +100,8 @@ SECTIONS
.altinstr_replacement : { *(.altinstr_replacement) } .altinstr_replacement : { *(.altinstr_replacement) }
/* .exit.text is discard at runtime, not link time, to deal with references /* .exit.text is discard at runtime, not link time, to deal with references
from .altinstructions and .eh_frame */ from .altinstructions and .eh_frame */
.exit.text : { *(.exit.text) } .exit.text : { EXIT_TEXT }
.exit.data : { *(.exit.data) } .exit.data : { EXIT_DATA }
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
. = ALIGN(4096); . = ALIGN(4096);
...@@ -124,8 +124,8 @@ SECTIONS ...@@ -124,8 +124,8 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -45,10 +45,10 @@ SECTIONS ...@@ -45,10 +45,10 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
...@@ -82,8 +82,8 @@ SECTIONS ...@@ -82,8 +82,8 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -38,10 +38,10 @@ SECTIONS ...@@ -38,10 +38,10 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
...@@ -77,8 +77,8 @@ __init_begin = .; ...@@ -77,8 +77,8 @@ __init_begin = .;
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -143,9 +143,9 @@ SECTIONS { ...@@ -143,9 +143,9 @@ SECTIONS {
. = ALIGN(4096); . = ALIGN(4096);
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
*(.init.data) INIT_DATA
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
*(.init.setup) *(.init.setup)
...@@ -170,8 +170,8 @@ SECTIONS { ...@@ -170,8 +170,8 @@ SECTIONS {
} > INIT } > INIT
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -114,11 +114,11 @@ SECTIONS ...@@ -114,11 +114,11 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(16); . = ALIGN(16);
.init.setup : { .init.setup : {
...@@ -144,10 +144,10 @@ SECTIONS ...@@ -144,10 +144,10 @@ SECTIONS
* references from .rodata * references from .rodata
*/ */
.exit.text : { .exit.text : {
*(.exit.text) EXIT_TEXT
} }
.exit.data : { .exit.data : {
*(.exit.data) EXIT_DATA
} }
#if defined(CONFIG_BLK_DEV_INITRD) #if defined(CONFIG_BLK_DEV_INITRD)
. = ALIGN(_PAGE_SIZE); . = ALIGN(_PAGE_SIZE);
......
...@@ -172,11 +172,11 @@ SECTIONS ...@@ -172,11 +172,11 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(16); . = ALIGN(16);
.init.setup : { .init.setup : {
...@@ -215,10 +215,10 @@ SECTIONS ...@@ -215,10 +215,10 @@ SECTIONS
* from .altinstructions and .eh_frame * from .altinstructions and .eh_frame
*/ */
.exit.text : { .exit.text : {
*(.exit.text) EXIT_TEXT
} }
.exit.data : { .exit.data : {
*(.exit.data) EXIT_DATA
} }
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
......
...@@ -23,7 +23,7 @@ SECTIONS ...@@ -23,7 +23,7 @@ SECTIONS
/* Sections to be discarded. */ /* Sections to be discarded. */
/DISCARD/ : { /DISCARD/ : {
*(.exitcall.exit) *(.exitcall.exit)
*(.exit.data) EXIT_DATA
} }
. = KERNELBASE; . = KERNELBASE;
...@@ -76,17 +76,19 @@ SECTIONS ...@@ -76,17 +76,19 @@ SECTIONS
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
/* .exit.text is discarded at runtime, not link time, /* .exit.text is discarded at runtime, not link time,
* to deal with references from __bug_table * to deal with references from __bug_table
*/ */
.exit.text : { *(.exit.text) } .exit.text : {
EXIT_TEXT
}
.init.data : { .init.data : {
*(.init.data); INIT_DATA
__vtop_table_begin = .; __vtop_table_begin = .;
*(.vtop_fixup); *(.vtop_fixup);
__vtop_table_end = .; __vtop_table_end = .;
......
...@@ -97,14 +97,14 @@ SECTIONS ...@@ -97,14 +97,14 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
/* .exit.text is discarded at runtime, not link time, /* .exit.text is discarded at runtime, not link time,
to deal with references from __bug_table */ to deal with references from __bug_table */
.exit.text : { *(.exit.text) } .exit.text : { EXIT_TEXT }
.init.data : { .init.data : {
*(.init.data); INIT_DATA
__vtop_table_begin = .; __vtop_table_begin = .;
*(.vtop_fixup); *(.vtop_fixup);
__vtop_table_end = .; __vtop_table_end = .;
...@@ -164,6 +164,6 @@ SECTIONS ...@@ -164,6 +164,6 @@ SECTIONS
/* Sections to be discarded. */ /* Sections to be discarded. */
/DISCARD/ : { /DISCARD/ : {
*(.exitcall.exit) *(.exitcall.exit)
*(.exit.data) EXIT_DATA
} }
} }
...@@ -97,7 +97,7 @@ SECTIONS ...@@ -97,7 +97,7 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
/* /*
...@@ -105,11 +105,11 @@ SECTIONS ...@@ -105,11 +105,11 @@ SECTIONS
* to deal with references from __bug_table * to deal with references from __bug_table
*/ */
.exit.text : { .exit.text : {
*(.exit.text) EXIT_TEXT
} }
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(0x100); . = ALIGN(0x100);
.init.setup : { .init.setup : {
...@@ -156,7 +156,7 @@ SECTIONS ...@@ -156,7 +156,7 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -84,9 +84,9 @@ SECTIONS ...@@ -84,9 +84,9 @@ SECTIONS
. = ALIGN(PAGE_SIZE); /* Init code and data */ . = ALIGN(PAGE_SIZE); /* Init code and data */
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
.init.text : { *(.init.text) } .init.text : { INIT_TEXT }
_einittext = .; _einittext = .;
.init.data : { *(.init.data) } .init.data : { INIT_DATA }
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
...@@ -122,8 +122,8 @@ SECTIONS ...@@ -122,8 +122,8 @@ SECTIONS
* .exit.text is discarded at runtime, not link time, to deal with * .exit.text is discarded at runtime, not link time, to deal with
* references from __bug_table * references from __bug_table
*/ */
.exit.text : { *(.exit.text) } .exit.text : { EXIT_TEXT }
.exit.data : { *(.exit.data) } .exit.data : { EXIT_DATA }
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
.bss : { .bss : {
......
...@@ -96,9 +96,9 @@ SECTIONS ...@@ -96,9 +96,9 @@ SECTIONS
. = ALIGN(PAGE_SIZE); /* Init code and data */ . = ALIGN(PAGE_SIZE); /* Init code and data */
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
.init.text : C_PHYS(.init.text) { *(.init.text) } .init.text : C_PHYS(.init.text) { INIT_TEXT }
_einittext = .; _einittext = .;
.init.data : C_PHYS(.init.data) { *(.init.data) } .init.data : C_PHYS(.init.data) { INIT_DATA }
. = ALIGN(L1_CACHE_BYTES); /* Better if Cache Line aligned */ . = ALIGN(L1_CACHE_BYTES); /* Better if Cache Line aligned */
__setup_start = .; __setup_start = .;
.init.setup : C_PHYS(.init.setup) { *(.init.setup) } .init.setup : C_PHYS(.init.setup) { *(.init.setup) }
...@@ -134,8 +134,8 @@ SECTIONS ...@@ -134,8 +134,8 @@ SECTIONS
* .exit.text is discarded at runtime, not link time, to deal with * .exit.text is discarded at runtime, not link time, to deal with
* references from __bug_table * references from __bug_table
*/ */
.exit.text : C_PHYS(.exit.text) { *(.exit.text) } .exit.text : C_PHYS(.exit.text) { EXIT_TEXT }
.exit.data : C_PHYS(.exit.data) { *(.exit.data) } .exit.data : C_PHYS(.exit.data) { EXIT_DATA }
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
.bss : C_PHYS(.bss) { .bss : C_PHYS(.bss) {
......
...@@ -48,12 +48,12 @@ SECTIONS ...@@ -48,12 +48,12 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
__init_text_end = .; __init_text_end = .;
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(16); . = ALIGN(16);
.init.setup : { .init.setup : {
...@@ -102,8 +102,8 @@ SECTIONS ...@@ -102,8 +102,8 @@ SECTIONS
_end = . ; _end = . ;
PROVIDE (end = .); PROVIDE (end = .);
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -56,11 +56,11 @@ SECTIONS ...@@ -56,11 +56,11 @@ SECTIONS
.init.text : { .init.text : {
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : { .init.data : {
*(.init.data) INIT_DATA
} }
. = ALIGN(16); . = ALIGN(16);
.init.setup : { .init.setup : {
...@@ -137,8 +137,8 @@ SECTIONS ...@@ -137,8 +137,8 @@ SECTIONS
PROVIDE (end = .); PROVIDE (end = .);
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -17,7 +17,7 @@ SECTIONS ...@@ -17,7 +17,7 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
...@@ -84,7 +84,7 @@ SECTIONS ...@@ -84,7 +84,7 @@ SECTIONS
#include "asm/common.lds.S" #include "asm/common.lds.S"
init.data : { *(.init.data) } init.data : { INIT_DATA }
/* Ensure the __preinit_array_start label is properly aligned. We /* Ensure the __preinit_array_start label is properly aligned. We
could instead move the label definition inside the section, but could instead move the label definition inside the section, but
......
...@@ -23,7 +23,7 @@ SECTIONS ...@@ -23,7 +23,7 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
. = ALIGN(4096); . = ALIGN(4096);
...@@ -48,7 +48,7 @@ SECTIONS ...@@ -48,7 +48,7 @@ SECTIONS
#include "asm/common.lds.S" #include "asm/common.lds.S"
init.data : { *(init.data) } init.data : { INIT_DATA }
.data : .data :
{ {
. = ALIGN(KERNEL_STACK_SIZE); /* init_task */ . = ALIGN(KERNEL_STACK_SIZE); /* init_task */
......
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
#define DATA_CONTENTS \ #define DATA_CONTENTS \
__sdata = . ; \ __sdata = . ; \
DATA_DATA \ DATA_DATA \
*(.exit.data) /* 2.5 convention */ \ EXIT_DATA /* 2.5 convention */ \
*(.data.exit) /* 2.4 convention */ \ *(.data.exit) /* 2.4 convention */ \
. = ALIGN (16) ; \ . = ALIGN (16) ; \
*(.data.cacheline_aligned) \ *(.data.cacheline_aligned) \
...@@ -157,9 +157,9 @@ ...@@ -157,9 +157,9 @@
. = ALIGN (4096) ; \ . = ALIGN (4096) ; \
__init_start = . ; \ __init_start = . ; \
__sinittext = .; \ __sinittext = .; \
*(.init.text) /* 2.5 convention */ \ INIT_TEXT /* 2.5 convention */ \
__einittext = .; \ __einittext = .; \
*(.init.data) \ INIT_DATA \
*(.text.init) /* 2.4 convention */ \ *(.text.init) /* 2.4 convention */ \
*(.data.init) \ *(.data.init) \
INITCALL_CONTENTS \ INITCALL_CONTENTS \
...@@ -170,7 +170,7 @@ ...@@ -170,7 +170,7 @@
#define ROMK_INIT_RAM_CONTENTS \ #define ROMK_INIT_RAM_CONTENTS \
. = ALIGN (4096) ; \ . = ALIGN (4096) ; \
__init_start = . ; \ __init_start = . ; \
*(.init.data) /* 2.5 convention */ \ INIT_DATA /* 2.5 convention */ \
*(.data.init) /* 2.4 convention */ \ *(.data.init) /* 2.4 convention */ \
__init_end = . ; \ __init_end = . ; \
. = ALIGN (4096) ; . = ALIGN (4096) ;
...@@ -179,7 +179,7 @@ ...@@ -179,7 +179,7 @@
should go into ROM. */ should go into ROM. */
#define ROMK_INIT_ROM_CONTENTS \ #define ROMK_INIT_ROM_CONTENTS \
_sinittext = .; \ _sinittext = .; \
*(.init.text) /* 2.5 convention */ \ INIT_TEXT /* 2.5 convention */ \
_einittext = .; \ _einittext = .; \
*(.text.init) /* 2.4 convention */ \ *(.text.init) /* 2.4 convention */ \
INITCALL_CONTENTS \ INITCALL_CONTENTS \
......
...@@ -131,10 +131,12 @@ SECTIONS ...@@ -131,10 +131,12 @@ SECTIONS
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
__init_begin = .; __init_begin = .;
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { *(.init.data) } .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
INIT_DATA
}
. = ALIGN(16); . = ALIGN(16);
.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
__setup_start = .; __setup_start = .;
...@@ -169,8 +171,12 @@ SECTIONS ...@@ -169,8 +171,12 @@ SECTIONS
} }
/* .exit.text is discard at runtime, not link time, to deal with references /* .exit.text is discard at runtime, not link time, to deal with references
from .altinstructions and .eh_frame */ from .altinstructions and .eh_frame */
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } EXIT_TEXT
}
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
EXIT_DATA
}
#if defined(CONFIG_BLK_DEV_INITRD) #if defined(CONFIG_BLK_DEV_INITRD)
. = ALIGN(4096); . = ALIGN(4096);
.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
......
...@@ -155,12 +155,15 @@ SECTIONS ...@@ -155,12 +155,15 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
_sinittext = .; _sinittext = .;
*(.init.text) INIT_TEXT
_einittext = .; _einittext = .;
} }
__initdata_begin = .; .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { *(.init.data) } __initdata_begin = .;
__initdata_end = .; INIT_DATA
__initdata_end = .;
}
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup) } .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup) }
...@@ -187,8 +190,12 @@ SECTIONS ...@@ -187,8 +190,12 @@ SECTIONS
} }
/* .exit.text is discard at runtime, not link time, to deal with references /* .exit.text is discard at runtime, not link time, to deal with references
from .altinstructions and .eh_frame */ from .altinstructions and .eh_frame */
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } EXIT_TEXT
}
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
EXIT_DATA
}
/* vdso blob that is mapped into user space */ /* vdso blob that is mapped into user space */
vdso_start = . ; vdso_start = . ;
......
...@@ -136,13 +136,13 @@ SECTIONS ...@@ -136,13 +136,13 @@ SECTIONS
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.literal) *(.init.text) *(.init.literal) INIT_TEXT
_einittext = .; _einittext = .;
} }
.init.data : .init.data :
{ {
*(.init.data) INIT_DATA
. = ALIGN(0x4); . = ALIGN(0x4);
__tagtable_begin = .; __tagtable_begin = .;
*(.taglist) *(.taglist)
...@@ -278,8 +278,9 @@ SECTIONS ...@@ -278,8 +278,9 @@ SECTIONS
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : /DISCARD/ :
{ {
*(.exit.literal .exit.text) *(.exit.literal)
*(.exit.data) EXIT_TEXT
EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
......
...@@ -183,6 +183,13 @@ ...@@ -183,6 +183,13 @@
*(.kprobes.text) \ *(.kprobes.text) \
VMLINUX_SYMBOL(__kprobes_text_end) = .; VMLINUX_SYMBOL(__kprobes_text_end) = .;
/* init and exit section handling */
#define INIT_TEXT *(.init.text)
#define INIT_DATA *(.init.data)
#define EXIT_TEXT *(.exit.text)
#define EXIT_DATA *(.exit.data)
/* DWARF debug sections. /* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to Symbols in the DWARF debugging sections are relative to
the beginning of the section so we begin them at 0. */ the beginning of the section so we begin them at 0. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment