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