[U-Boot] [PATCH 2/4] arm: make __image_copy_{start, end} compiler-generated

Albert ARIBAUD albert.u.boot at aribaud.net
Fri May 10 23:56:50 CEST 2013


Signed-off-by: Albert ARIBAUD <albert.u.boot at aribaud.net>
---
 arch/arm/cpu/arm1136/start.S                  |    7 +++----
 arch/arm/cpu/arm1136/u-boot-spl.lds           |    3 ++-
 arch/arm/cpu/arm720t/start.S                  |   11 +++++++----
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds        |    6 +++++-
 arch/arm/cpu/arm926ejs/start.S                |    7 +++----
 arch/arm/cpu/armv7/am33xx/u-boot-spl.lds      |    2 --
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds |    2 --
 arch/arm/cpu/armv7/socfpga/u-boot-spl.lds     |    1 -
 arch/arm/cpu/armv7/start.S                    |    6 ++----
 arch/arm/cpu/ixp/u-boot.lds                   |    6 +++++-
 arch/arm/cpu/u-boot-spl.lds                   |    3 +--
 arch/arm/cpu/u-boot.lds                       |    7 +++++--
 arch/arm/lib/sections.c                       |    4 +++-
 13 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index ccea2d5..ab8fd56 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -104,10 +104,6 @@ _TEXT_BASE:
 _bss_start_ofs:
 	.word __bss_start - _start
 
-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
-	.word __image_copy_end - _start
-
 .globl _bss_end_ofs
 _bss_end_ofs:
 	.word __bss_end - _start
@@ -239,6 +235,9 @@ relocate_done:
 
 	bx	lr
 
+_image_copy_end_ofs:
+	.word __image_copy_end - _start
+
 #ifndef CONFIG_SPL_BUILD
 
 _rel_dyn_start_ofs:
diff --git a/arch/arm/cpu/arm1136/u-boot-spl.lds b/arch/arm/cpu/arm1136/u-boot-spl.lds
index 8296e5d..04fc881 100644
--- a/arch/arm/cpu/arm1136/u-boot-spl.lds
+++ b/arch/arm/cpu/arm1136/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
 {
 	.text      :
 	{
-	__start = .;
 	  arch/arm/cpu/arm1136/start.o	(.text*)
 	  *(.text*)
 	} >.sram
@@ -48,7 +47,9 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
+
 	__image_copy_end = .;
+
 	_end = .;
 
 	.bss :
diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S
index 9facc7e..b85509c 100644
--- a/arch/arm/cpu/arm720t/start.S
+++ b/arch/arm/cpu/arm720t/start.S
@@ -101,10 +101,6 @@ _TEXT_BASE:
 _bss_start_ofs:
 	.word __bss_start - _start
 
-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
-	.word __image_copy_end - _start
-
 .globl _bss_end_ofs
 _bss_end_ofs:
 	.word __bss_end - _start
@@ -221,6 +217,11 @@ relocate_done:
 
 	mov	pc, lr
 
+_image_copy_end_ofs:
+	.word __image_copy_end - _start
+
+#ifndef CONFIG_SPL_BUILD
+
 _rel_dyn_start_ofs:
 	.word __rel_dyn_start - _start
 _rel_dyn_end_ofs:
@@ -228,6 +229,8 @@ _rel_dyn_end_ofs:
 _dynsym_start_ofs:
 	.word __dynsym_start - _start
 
+#endif
+
 	.globl	c_runtime_cpu_setup
 c_runtime_cpu_setup:
 
diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index cf55bf7..2b32c0a 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -31,6 +31,7 @@ SECTIONS
 	. = ALIGN(4);
 	.text      :
 	{
+	  *(.__image_copy_start)
 	  arch/arm/cpu/arm920t/start.o	(.text*)
 		/* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */
 	  . = 0x1000;
@@ -56,7 +57,10 @@ SECTIONS
 
 	. = ALIGN(4);
 
-	__image_copy_end = .;
+	.image_copy_end :
+	{
+		*(.__image_copy_end);
+	}
 
 	__bss_start = .;
 	.bss : { *(.bss*) }
diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 4c56711..736361a 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -136,10 +136,6 @@ _TEXT_BASE:
 _bss_start_ofs:
 	.word __bss_start - _start
 
-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
-	.word __image_copy_end - _start
-
 .globl _bss_end_ofs
 _bss_end_ofs:
 	.word __bss_end - _start
@@ -256,6 +252,9 @@ relocate_done:
 
 	bx	lr
 
+_image_copy_end_ofs:
+	.word __image_copy_end - _start
+
 #ifndef CONFIG_SPL_BUILD
 
 _rel_dyn_start_ofs:
diff --git a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
index b6a929f..29cefd0 100644
--- a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
 {
 	.text      :
 	{
-		__start = .;
 		arch/arm/cpu/armv7/start.o	(.text)
 		*(.text*)
 	} >.sram
@@ -53,7 +52,6 @@ SECTIONS
 	} >.sram
 
 	. = ALIGN(4);
-	__image_copy_end = .;
 	_end = .;
 
 	.bss :
diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
index bd218c0..81cafe1 100644
--- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
 {
 	.text      :
 	{
-		__start = .;
 		arch/arm/cpu/armv7/start.o	(.text*)
 		*(.text*)
 	} >.sram
@@ -49,7 +48,6 @@ SECTIONS
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 
 	. = ALIGN(4);
-	__image_copy_end = .;
 	_end = .;
 
 	.bss :
diff --git a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
index 15f8c01..c0dcfd7 100644
--- a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
@@ -38,7 +38,6 @@ SECTIONS
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sdram
 
 	. = ALIGN(4);
-	__image_copy_end = .;
 	_end = .;
 
 	.bss : {
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index e9e57e6..3ade510 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -94,10 +94,6 @@ _TEXT_BASE:
 _bss_start_ofs:
 	.word __bss_start - _start
 
-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
-	.word __image_copy_end - _start
-
 .globl _bss_end_ofs
 _bss_end_ofs:
 	.word __bss_end - _start
@@ -231,6 +227,8 @@ relocate_done:
 
 	bx	lr
 
+_image_copy_end_ofs:
+	.word __image_copy_end - _start
 _rel_dyn_start_ofs:
 	.word __rel_dyn_start - _start
 _rel_dyn_end_ofs:
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index 553589c..1a0ba17 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -31,6 +31,7 @@ SECTIONS
 	. = ALIGN(4);
 	.text :
 	{
+		*(.__image_copy_start)
 		arch/arm/cpu/ixp/start.o(.text*)
 		*(.text*)
 	}
@@ -54,7 +55,10 @@ SECTIONS
 
 	. = ALIGN(4);
 
-	__image_copy_end = .;
+	.image_copy_end :
+	{
+		*(.__image_copy_end);
+	}
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds
index 1408f03..87341c1 100644
--- a/arch/arm/cpu/u-boot-spl.lds
+++ b/arch/arm/cpu/u-boot-spl.lds
@@ -33,7 +33,6 @@ SECTIONS
 	. = ALIGN(4);
 	.text :
 	{
-		__image_copy_start = .;
 		CPUDIR/start.o (.text*)
 		*(.text*)
 	}
@@ -80,7 +79,7 @@ SECTIONS
 }
 
 #if defined(CONFIG_SPL_MAX_SIZE)
-ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \
+ASSERT(__image_copy_end - _start < (CONFIG_SPL_MAX_SIZE), \
 	"SPL image too big");
 #endif
 
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index d9bbee3..5b43621 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -33,7 +33,7 @@ SECTIONS
 	. = ALIGN(4);
 	.text :
 	{
-		__image_copy_start = .;
+		*(.__image_copy_start)
 		CPUDIR/start.o (.text*)
 		*(.text*)
 	}
@@ -57,7 +57,10 @@ SECTIONS
 
 	. = ALIGN(4);
 
-	__image_copy_end = .;
+	.image_copy_end :
+	{
+		*(.__image_copy_end);
+	}
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c
index 99eda59..80a0c38 100644
--- a/arch/arm/lib/sections.c
+++ b/arch/arm/lib/sections.c
@@ -21,7 +21,7 @@
  */
 
 /**
- * These two symbols are declared in a C file so that the linker
+ * The following symbols are declared in a C file so that the linker
  * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one
  * it would use if the symbols were defined in the linker file.
  * Using only R_ARM_RELATIVE relocation ensures that references to
@@ -37,3 +37,5 @@
 
 char __bss_start[0] __attribute__((used, section(".__bss_start")));
 char __bss_end[0] __attribute__((used, section(".__bss_end")));
+char __image_copy_start[0] __attribute__((used, section(".__image_copy_start")));
+char __image_copy_end[0] __attribute__((used, section(".__image_copy_end")));
-- 
1.7.10.4



More information about the U-Boot mailing list