Patchwork [U-Boot,V3,1/3] arm926ejs: fix linker file for newer ld support

login
register
mail settings
Submitter Albert ARIBAUD
Date Nov. 3, 2010, 6:24 p.m.
Message ID <1288808663-15074-1-git-send-email-albert.aribaud@free.fr>
Download mbox | patch
Permalink /patch/71986/
State Superseded
Headers show

Comments

Albert ARIBAUD - Nov. 3, 2010, 6:24 p.m.
older ld emitted all ELF relocations in input sections named
.rel.dyn, whereas newer ld uses names of the form .rel*. The
linker script only collected .rel.dyn input sections. Rewrite
to collect all .rel* input sections.

Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
---
V1	Initial submission
V2	arm926ejs: added ALIGN between bss and .rel.dyn sections
	tx25: removed GOT and datarel output sections
	tx25: fixed typo in config file commit message
V3	arm926ejs: overlaied .bss and .rel.dyn sections
	tx25: overlaied .bss and .rel.dyn sections

 arch/arm/cpu/arm926ejs/u-boot.lds |   29 +++++++++++++++++------------
 1 files changed, 17 insertions(+), 12 deletions(-)
Alexander Holler - Nov. 4, 2010, 10:26 a.m.
I've just tested that patch using my small test-patch:

-----------------------------------------------------------
Marvell>> g 0x700000
## Starting application at 0x00700000 ...


U-Boot 2010.12-rc1-00037-g0ab2006 (Nov 04 2010 - 11:14:24)
Seagate-DockStar

SoC:   Kirkwood 88F6281_A0
DRAM:  128 MiB
(relocated) BSS is from 07fa8f60 to 07fef040
&monitor_flash_len: 00752f60
WARNING: relocation failed (&monitor_flash_len is outside reloctated BSS)!
-----------------------------------------------------------

Regards,

Alexander

Patch

diff --git a/arch/arm/cpu/arm926ejs/u-boot.lds b/arch/arm/cpu/arm926ejs/u-boot.lds
index 72f45f8..4ae7b47 100644
--- a/arch/arm/cpu/arm926ejs/u-boot.lds
+++ b/arch/arm/cpu/arm926ejs/u-boot.lds
@@ -45,24 +45,29 @@  SECTIONS
 
 	. = ALIGN(4);
 
-	__rel_dyn_start = .;
-	.rel.dyn : { *(.rel.dyn) }
-	__rel_dyn_end = .;
-
-	__dynsym_start = .;
-	.dynsym : { *(.dynsym) }
-
-	. = ALIGN(4);
-
 	. = .;
 	__u_boot_cmd_start = .;
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
-	__bss_start = .;
-	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-	_end = .;
+	.bss (NOLOAD) : {
+		__bss_start = .;
+		*(.bss)
+		 . = ALIGN(4);
+		_end = .;
+	}
+
+	.rel.dyn __bss_start (OVERLAY) : {
+		__rel_dyn_start = .;
+		*(.rel*)
+		__rel_dyn_end = .;
+	}
+
+	.dynsym : {
+		__dynsym_start = .;
+		*(.dynsym)
+	}
 
 	/DISCARD/ : { *(.dynstr*) }
 	/DISCARD/ : { *(.dynamic*) }