Skip to contentSkip to conversation

make section names compatible with -ffunction-sections -fdata-sections: sh

PATCH In review Denys Vlasenko 1 participant 1 message Jul 1, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 18/23 make section names compatible with -ffunction-sections -fdata-sections: sh

The purpose of this patch is to make kernel buildable with "gcc -ffunction-sections -fdata-sections". This patch fixes sh architecture.

--
vda

arch/sh/kernel/cpu/sh5/entry.S +2 -2
@@ -2063,10 +2063,10 @@
 
 
 /*
- * --- .text.init Section
+ * --- .init.text Section
  */
 
-	.section	.text.init, "ax"
+	.section	.init.text, "ax"
 
 /*
  * void trap_init (void)
arch/sh/kernel/head_32.S +1 -1
@@ -40,7 +40,7 @@
 1:
 	.skip	PAGE_SIZE - empty_zero_page - 1b
 
-	.section	.text.head, "ax"
+	.section	.head.text, "ax"
 
 /*
  * Condition at the entry of _stext:
arch/sh/kernel/head_64.S +1 -1
@@ -110,7 +110,7 @@
 fpu_in_use:	.quad	0
 
 
-	.section	.text.head, "ax"
+	.section	.head.text, "ax"
 	.balign L1_CACHE_BYTES
 /*
  * Condition at the entry of __stext:
arch/sh/kernel/init_task.c +1 -1
@@ -22,7 +22,7 @@
  * "init_task" linker map entry..
  */
 union thread_union init_thread_union
-	__attribute__((__section__(".data.init_task"))) =
+	__attribute__((__section__(".init_task.data"))) =
 		{ INIT_THREAD_INFO(init_task) };
 
 /*
arch/sh/kernel/irq.c +2 -2
@@ -158,10 +158,10 @@
 
 #ifdef CONFIG_IRQSTACKS
 static char softirq_stack[NR_CPUS * THREAD_SIZE]
-		__attribute__((__section__(".bss.page_aligned")));
+		__attribute__((__section__(".bss.k.page_aligned")));
 
 static char hardirq_stack[NR_CPUS * THREAD_SIZE]
-		__attribute__((__section__(".bss.page_aligned")));
+		__attribute__((__section__(".bss.k.page_aligned")));
 
 /*
  * allocate per-cpu stacks for hardirq and for softirq processing
arch/sh/kernel/vmlinux_32.lds.S +7 -7
@@ -28,7 +28,7 @@
 	} = 0
 
 	.text : {
-		*(.text.head)
+		*(.head.text)
 		TEXT_TEXT
 		SCHED_TEXT
 		LOCK_TEXT
@@ -59,19 +59,19 @@
 
 	. = ALIGN(THREAD_SIZE);
 	.data : {			/* Data */
-		*(.data.init_task)
+		*(.init_task.data)
 
 		. = ALIGN(L1_CACHE_BYTES);
-		*(.data.cacheline_aligned)
+		*(.cacheline_aligned.data)
 
 		. = ALIGN(L1_CACHE_BYTES);
-		*(.data.read_mostly)
+		*(.read_mostly.data)
 
 		. = ALIGN(PAGE_SIZE);
-		*(.data.page_aligned)
+		*(.page_aligned.data)
 
 		__nosave_begin = .;
-		*(.data.nosave)
+		*(.nosave.data)
 		. = ALIGN(PAGE_SIZE);
 		__nosave_end = .;
 
@@ -129,7 +129,7 @@
 	.bss : {
 		__init_end = .;
 		__bss_start = .;		/* BSS */
-		*(.bss.page_aligned)
+		*(.bss.k.page_aligned)
 		*(.bss)
 		*(COMMON)
 		. = ALIGN(4);
arch/sh/kernel/vmlinux_64.lds.S +7 -7
@@ -42,7 +42,7 @@
 	} = 0
 
 	.text : C_PHYS(.text) {
-		*(.text.head)
+		*(.head.text)
 		TEXT_TEXT
 		*(.text64)
 		*(.text..SHmedia32)
@@ -71,19 +71,19 @@
 
 	. = ALIGN(THREAD_SIZE);
 	.data : C_PHYS(.data) {			/* Data */
-		*(.data.init_task)
+		*(.init_task.data)
 
 		. = ALIGN(L1_CACHE_BYTES);
-		*(.data.cacheline_aligned)
+		*(.cacheline_aligned.data)
 
 		. = ALIGN(L1_CACHE_BYTES);
-		*(.data.read_mostly)
+		*(.read_mostly.data)
 
 		. = ALIGN(PAGE_SIZE);
-		*(.data.page_aligned)
+		*(.page_aligned.data)
 
 		__nosave_begin = .;
-		*(.data.nosave)
+		*(.nosave.data)
 		. = ALIGN(PAGE_SIZE);
 		__nosave_end = .;
 
@@ -141,7 +141,7 @@
 	.bss : C_PHYS(.bss) {
 		__init_end = .;
 		__bss_start = .;		/* BSS */
-		*(.bss.page_aligned)
+		*(.bss.k.page_aligned)
 		*(.bss)
 		*(COMMON)
 		. = ALIGN(4);
include/asm-sh/cache.h +1 -1
@@ -14,7 +14,7 @@
 
 #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT)
 
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".read_mostly.data")))
 
 #ifndef __ASSEMBLY__
 struct cache_info {