浏览代码

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>
Sam Ravnborg 17 年之前
父节点
当前提交
01ba2bdc6b

+ 4 - 4
arch/alpha/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
 	}
 	}
 
 

+ 5 - 5
arch/arm/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		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

+ 4 - 4
arch/avr32/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/blackfin/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
 	}
 	}
 }
 }

+ 4 - 4
arch/cris/arch-v10/vmlinux.lds.S

@@ -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)
-        	*(.data.exit)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
         }
         }
 
 

+ 4 - 4
arch/cris/arch-v32/vmlinux.lds.S

@@ -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)
-        	*(.data.exit)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
         }
         }
 
 

+ 7 - 7
arch/frv/kernel/vmlinux.lds.S

@@ -28,14 +28,14 @@ SECTIONS
   .init.text : {
   .init.text : {
 	*(.text.head)
 	*(.text.head)
 #ifndef CONFIG_DEBUG_INFO
 #ifndef CONFIG_DEBUG_INFO
-	*(.init.text)
-	*(.exit.text)
-	*(.exit.data)
+	INIT_TEXT
+	EXIT_TEXT
+	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
-	.exit.text
+	INIT_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
 	}
 	}
 
 

+ 4 - 4
arch/h8300/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 #if defined(CONFIG_BLK_DEV_INITRD)
 #if defined(CONFIG_BLK_DEV_INITRD)
 		. = ALIGN(4);
 		. = ALIGN(4);
 	___initramfs_start = .;
 	___initramfs_start = .;

+ 4 - 4
arch/ia64/kernel/vmlinux.lds.S

@@ -27,8 +27,8 @@ SECTIONS
 {
 {
   /* Sections to be discarded */
   /* Sections to be discarded */
   /DISCARD/ : {
   /DISCARD/ : {
-	*(.exit.text)
-	*(.exit.data)
+	EXIT_TEXT
+	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)

+ 6 - 6
arch/m32r/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/m68k/kernel/vmlinux-std.lds

@@ -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.data)
+	EXIT_TEXT
+	EXIT_DATA
 	*(.exitcall.exit)
 	*(.exitcall.exit)
 	}
 	}
 
 

+ 4 - 4
arch/m68k/kernel/vmlinux-sun3.lds

@@ -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.data)
+	EXIT_TEXT
+	EXIT_DATA
 	*(.exitcall.exit)
 	*(.exitcall.exit)
 	}
 	}
 
 

+ 4 - 4
arch/m68knommu/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
 	}
 	}
 
 

+ 4 - 4
arch/mips/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/parisc/kernel/vmlinux.lds.S

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

+ 6 - 4
arch/powerpc/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/ppc/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/s390/kernel/vmlinux.lds.S

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

+ 4 - 4
arch/sh/kernel/vmlinux_32.lds.S

@@ -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.data : { *(.exit.data) }
+	.exit.text : { EXIT_TEXT }
+	.exit.data : { EXIT_DATA }
 
 
 	. = ALIGN(PAGE_SIZE);
 	. = ALIGN(PAGE_SIZE);
 	.bss : {
 	.bss : {

+ 4 - 4
arch/sh/kernel/vmlinux_64.lds.S

@@ -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.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);
 	. = ALIGN(PAGE_SIZE);
 	.bss : C_PHYS(.bss) {
 	.bss : C_PHYS(.bss) {

+ 4 - 4
arch/sparc/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
 	}
 	}
 
 

+ 4 - 4
arch/sparc64/kernel/vmlinux.lds.S

@@ -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.data)
+		EXIT_TEXT
+		EXIT_DATA
 		*(.exitcall.exit)
 		*(.exitcall.exit)
 	}
 	}
 
 

+ 2 - 2
arch/um/kernel/dyn.lds.S

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

+ 2 - 2
arch/um/kernel/uml.lds.S

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

+ 5 - 5
arch/v850/kernel/vmlinux.lds.S

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

+ 10 - 4
arch/x86/kernel/vmlinux_32.lds.S

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

+ 13 - 6
arch/x86/kernel/vmlinux_64.lds.S

@@ -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) }
-  __initdata_end = .;
+  .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
+	__initdata_begin = .;
+	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.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 blob that is mapped into user space */
   vdso_start = . ;
   vdso_start = . ;

+ 5 - 4
arch/xtensa/kernel/vmlinux.lds.S

@@ -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.data)
+	*(.exit.literal)
+	EXIT_TEXT
+	EXIT_DATA
         *(.exitcall.exit)
         *(.exitcall.exit)
   }
   }
 
 

+ 7 - 0
include/asm-generic/vmlinux.lds.h

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