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>
This commit is contained in:
Sam Ravnborg 2008-01-20 14:15:03 +01:00
parent 6c5bd235bf
commit 01ba2bdc6b
29 changed files with 140 additions and 117 deletions

View File

@ -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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
__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
#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

View File

@ -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
* 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)
} }

View File

@ -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
/DISCARD/ : /DISCARD/ :
{ {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }
} }

View File

@ -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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.text.exit) EXIT_TEXT
*(.data.exit) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.text.exit) EXIT_TEXT
*(.data.exit) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
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
.data : { /* Data */ .data : { /* Data */
DATA_DATA DATA_DATA
*(.data.*) *(.data.*)
*(.exit.data) EXIT_DATA
CONSTRUCTORS CONSTRUCTORS
} }

View File

@ -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
___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 = .;

View File

@ -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
.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)

View File

@ -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
.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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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 = .;
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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 {
} > INIT } > INIT
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
* 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);

View File

@ -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
* 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);

View File

@ -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
.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 = .;

View File

@ -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
/* Sections to be discarded. */ /* Sections to be discarded. */
/DISCARD/ : { /DISCARD/ : {
*(.exitcall.exit) *(.exitcall.exit)
*(.exit.data) EXIT_DATA
} }
} }

View File

@ -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
* 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
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { /DISCARD/ : {
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
* .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 : {

View File

@ -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
* .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) {

View File

@ -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
_end = . ; _end = . ;
PROVIDE (end = .); PROVIDE (end = .);
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

@ -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
PROVIDE (end = .); PROVIDE (end = .);
/DISCARD/ : { /DISCARD/ : {
*(.exit.text) EXIT_TEXT
*(.exit.data) EXIT_DATA
*(.exitcall.exit) *(.exitcall.exit)
} }

View File

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

View File

@ -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
#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 */

View File

@ -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 @@
. = 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 @@
#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 @@
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 \

View File

@ -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
} }
/* .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) {

View File

@ -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
} }
/* .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 = . ;

View File

@ -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
/* 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)
} }

View File

@ -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. */