Tidy up ARM link scripts
Subsystems (2)
cover Tidy up ARM link scripts
The ARM link scripts are very similar but each CPU has its own. This series adds support for a default link script across an architecture in arch/<arch>/cpu/u-boot.lds.
It is then possible to remove most of the ARM link scripts. This will make it easier to maintain these.
Simon Glass (6):
Allow arch directory to contain .lds without requiring Makefile
arm: Remove jornada link script
arm: Remove unneeded setting of LDCSRIPT
Define CPUDIR for the .lds link script
arm: add a common .lds link script
arm: Use common .lds file where possible
Makefile | 13 ++++-
arch/arm/config.mk | 7 ---
arch/arm/cpu/arm1136/u-boot.lds | 89 -----------------------------------
arch/arm/cpu/arm1176/u-boot.lds | 78 ------------------------------
arch/arm/cpu/arm720t/u-boot.lds | 79 -------------------------------
arch/arm/cpu/arm920t/u-boot.lds | 88 ----------------------------------
arch/arm/cpu/arm925t/u-boot.lds | 83 --------------------------------
arch/arm/cpu/arm926ejs/u-boot.lds | 80 -------------------------------
arch/arm/cpu/arm946es/u-boot.lds | 80 -------------------------------
arch/arm/cpu/arm_intcm/u-boot.lds | 80 -------------------------------
arch/arm/cpu/lh7a40x/u-boot.lds | 80 -------------------------------
arch/arm/cpu/pxa/u-boot.lds | 80 -------------------------------
arch/arm/cpu/s3c44b0/u-boot.lds | 80 -------------------------------
arch/arm/cpu/sa1100/u-boot.lds | 83 --------------------------------
arch/arm/cpu/{armv7 => }/u-boot.lds | 5 +-
board/jornada/u-boot.lds | 58 -----------------------
16 files changed, 13 insertions(+), 1050 deletions(-)
delete mode 100644 arch/arm/cpu/arm1136/u-boot.lds
delete mode 100644 arch/arm/cpu/arm1176/u-boot.lds
delete mode 100644 arch/arm/cpu/arm720t/u-boot.lds
delete mode 100644 arch/arm/cpu/arm920t/u-boot.lds
delete mode 100644 arch/arm/cpu/arm925t/u-boot.lds
delete mode 100644 arch/arm/cpu/arm926ejs/u-boot.lds
delete mode 100644 arch/arm/cpu/arm946es/u-boot.lds
delete mode 100644 arch/arm/cpu/arm_intcm/u-boot.lds
delete mode 100644 arch/arm/cpu/lh7a40x/u-boot.lds
delete mode 100644 arch/arm/cpu/pxa/u-boot.lds
delete mode 100644 arch/arm/cpu/s3c44b0/u-boot.lds
delete mode 100644 arch/arm/cpu/sa1100/u-boot.lds
rename arch/arm/cpu/{armv7 => }/u-boot.lds (94%)
delete mode 100644 board/jornada/u-boot.ldsSignature · 1 line
1.7.3.1
PATCH 1/6 Allow arch directory to contain .lds without requiring Makefile
The Makefile for a CPU is in arch/($ARCH)/cpu/$(CPU). We want to support having an .lds file in arch/$(ARCH)/cpu without requiring an additional Makefile there. This change makes it clear that we expect a Makefile in the same directory as the link script except in this case.
--- Makefile | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
Makefile +8 -1
@@ -174,6 +174,8 @@ include $(TOPDIR)/config.mk # that (or fail if absent). Otherwise, search for a linker script in a # standard location. +LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) + ifndef LDSCRIPT #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug ifdef CONFIG_SYS_LDSCRIPT
@@ -196,6 +198,11 @@ ifndef LDSCRIPT LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds endif ifeq ($(wildcard $(LDSCRIPT)),) + LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds + # We don't expect a Makefile here + LDSCRIPT_MAKEFILE_DIR = + endif + ifeq ($(wildcard $(LDSCRIPT)),) $(error could not find linker script) endif endif
@@ -498,7 +505,7 @@ depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \ $(obj)include/autoconf.mk \ $(obj)include/generated/generic-asm-offsets.h \ $(obj)include/generated/asm-offsets.h - for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \ + for dir in $(SUBDIRS) $(CPUDIR) $(LDSCRIPT_MAKEFILE_DIR) ; do \ $(MAKE) -C $$dir _depend ; done TAG_SUBDIRS = $(SUBDIRS)
Signature · 1 line
1.7.3.1
PATCH 1/6 Allow arch directory to contain .lds without requiring Makefile
Quoted 24 lines
The
Makefilefor a CPU is in arch/($ARCH)/cpu/$(CPU). We want to support having an .lds file in arch/$(ARCH)/cpu without requiring an additionalMakefilethere. This change makes it clear that we expect aMakefilein the same directory as the link script except in this case.Signed-off-by Simon Glass <[email protected]>--- Makefile | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)Makefile +2
-0@@ -174,6 +174,8 @@ include $(TOPDIR)/config.mk # that (or fail if absent). Otherwise, search for a linker script in a # standard location. +LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) + ifndef LDSCRIPT #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug ifdef CONFIG_SYS_LDSCRIPT
Makefile ifndef LDSCRIPT · line 205
Quoted 8 lines
Makefile +5
-0@@ -196,6 +198,11 @@ ifndef LDSCRIPT LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds endif ifeq ($(wildcard $(LDSCRIPT)),) + LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds + # We don't expect a Makefile here + LDSCRIPT_MAKEFILE_DIR = + endif + ifeq ($(wildcard $(LDSCRIPT)),)
Do I see the same ifeq... twice in here ? I understand what you do here, but it'd be good to add a comment please.
Quoted 12 lines
Makefile +1
-1$(error could not find linker script) endif endif@@ -498,7 +505,7 @@ depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \ $(obj)include/autoconf.mk \ $(obj)include/generated/generic-asm-offsets.h \ $(obj)include/generated/asm-offsets.h - for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \ + for dir in $(SUBDIRS) $(CPUDIR) $(LDSCRIPT_MAKEFILE_DIR) ; do \ $(MAKE) -C $$dir _depend ; done TAG_SUBDIRS = $(SUBDIRS)
PATCH 1/6 Allow arch directory to contain .lds without requiring Makefile
Hi Marek,
Quoted 27 lines · Marek Vasut
Quoted 27 lines
The
Makefilefor a CPU is in arch/($ARCH)/cpu/$(CPU). We want to support having an .lds file in arch/$(ARCH)/cpu without requiring an additionalMakefilethere. This change makes it clear that we expect aMakefilein the same directory as the link script except in this case.Signed-off-by Simon Glass <[email protected]>---
?Makefile | ? ?9 ++++++++-
?1 files changed, 8 insertions(+), 1 deletions(-)Makefile +0
-0@@ -174,6 +174,8 @@ include $(TOPDIR)/config.mk?# that (or fail if absent). ?Otherwise, search for a linker script in a ?# standard location.
Makefile +2
-0+LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) +?ifndef LDSCRIPT
? ? ? #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug ? ? ? ifdefCONFIG_SYS_LDSCRIPTMakefile +0
-0@@ -196,6 +198,11 @@ ifndef LDSCRIPT? ? ? ? ? ? ? LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds ? ? ? endif
? ? ? ifeq ($(wildcard $(LDSCRIPT)),)
Quoted 8 lines
Quoted 5 lines
+ ? ? ? ? ? ? LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
+ ? ? ? ? ? ? # We don't expect aMakefilehere
+ ? ? ? ? ? ?LDSCRIPT_MAKEFILE_DIR=
+ ? ? endif
+ ? ? ifeq ($(wildcard $(LDSCRIPT)),)Do I see the same ifeq... twice in here ? I understand what you do here, but it'd be good to add a comment please.
Actually it is in there 3 times, and I added a 4th! It is just trying to find a link script. I will add a comment to the top.
Regards,
Simon
Quoted 15 lines
Quoted 14 lines
?$(error could not find linker script)
? ? ? endif
?endifMakefile +0
-0@@ -498,7 +505,7 @@ depend dep: ? ? ? $(TIMESTAMP_FILE) $(VERSION_FILE) \ ? ? ? ? ? ? ? $(obj)include/autoconf.mk \ ? ? ? ? ? ? ? $(obj)include/generated/generic-asm-offsets.h \? ? ? ? ? ? ? $(obj)include/generated/asm-offsets.h
- ? ? ? ? ? ? for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \
+ ? ? ? ? ? ? for dir in $(SUBDIRS) $(CPUDIR) $(LDSCRIPT_MAKEFILE_DIR) ; do \
? ? ? ? ? ? ? ? ? ? ? $(MAKE) -C $$dir_depend; done?TAG_SUBDIRS = $(SUBDIRS)
PATCH 1/6 Allow arch directory to contain .lds without requiring Makefile
In reply to Marek VasutQuoted 11 lines · On Saturday 19 November 2011 23:07:08 Marek Vasut wrote:
Makefile ifndef LDSCRIPT · line 205
Quoted 8 lines
Makefile +5
-0LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds endif ifeq ($(wildcard $(LDSCRIPT)),) + LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds + # We don't expect a Makefile here + LDSCRIPT_MAKEFILE_DIR = + endif + ifeq ($(wildcard $(LDSCRIPT)),)Do I see the same ifeq... twice in here ? I understand what you do here, but it'd be good to add a comment please.
in the larger context, it makes sense
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111120/fed3af77/attachment.pgp>
PATCH 2/6 arm: Remove jornada link script
In reply to Simon GlassThis link script seems old and incompatible with relocation and its own sa1000 start.S file. It isn't used because the CPU's link script was picked up in preference to this.
--- board/jornada/u-boot.lds | 58 ---------------------------------------------- 1 files changed, 0 insertions(+), 58 deletions(-) delete mode 100644 board/jornada/u-boot.lds
board/jornada/u-boot.lds deleted +0 -58
@@ -1,58 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd at denx.de. - * 2004 (c) MontaVista Software, Inc. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - cpu/sa1100/start.o (.text) - *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .got : { *(.got) } - - - . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - __bss_start = .; - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; -}
Signature · 1 line
1.7.3.1
PATCH 2/6 arm: Remove jornada link script
Quoted 65 lines
This link script seems old and incompatible with relocation and its own sa1000
start.Sfile. It isn't used because the CPU's link script was picked up in preference to this.Signed-off-by Simon Glass <[email protected]>--- board/jornada/u-boot.lds | 58 ---------------------------------------------- 1 files changed, 0 insertions(+), 58 deletions(-) delete mode 100644 board/jornada/u-boot.ldsboard/jornada/u-boot.lds deleted +0
-48@@ -1,58 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd at denx.de. - * 2004 (c) MontaVista Software, Inc. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - cpu/sa1100/start.o (.text) - *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .got : { *(.got) } - -
board/jornada/u-boot.lds line 58
Quoted 10 lines
board/jornada/u-boot.lds deleted +0
-10- . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - __bss_start = .; - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; -}
Please CC jornada guy next time. Anyway, it looks ok to me, but IMO needs some testing.
M
PATCH 2/6 arm: Remove jornada link script
Acked
Quoted 80 lines · Marek Vasut
Quoted 65 lines
This link script seems old and incompatible with relocation and its own sa1000
start.Sfile. It isn't used because the CPU's link script was picked up in preference to this.Signed-off-by Simon Glass <[email protected]>--- board/jornada/u-boot.lds | 58 ---------------------------------------------- 1 files changed, 0 insertions(+), 58 deletions(-) delete mode 100644 board/jornada/u-boot.ldsboard/jornada/u-boot.lds deleted +0
-48@@ -1,58 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd at denx.de. - * 2004 (c) MontaVista Software, Inc. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - cpu/sa1100/start.o (.text) - *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .got : { *(.got) } - -board/jornada/u-boot.lds line 58
Quoted 10 lines
board/jornada/u-boot.lds deleted +0
-10- . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - __bss_start = .; - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; -}Please CC jornada guy next time. Anyway, it looks ok to me, but IMO needs some testing.
M
PATCH 2/6 arm: Remove jornada link script
Quoted 1 line
Acked
Ok, so how shall we handle SA1110 ? I can pick it up, then send pullrq to albert ?
M
Quoted 85 lines · Marek Vasut
Quoted 83 lines
Quoted 68 lines
This link script seems old and incompatible with relocation and its own sa1000
start.Sfile. It isn't used because the CPU's link script was picked up in preference to this.Signed-off-by Simon Glass <[email protected]>---
board/jornada/u-boot.lds | 58---------------------------------------------- 1 files changed, 0 insertions(+), 58 deletions(-)
delete mode 100644 board/jornada/u-boot.ldsboard/jornada/u-boot.lds deleted +0
-48@@ -1,58 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd at denx.de. - * 2004 (c) MontaVista Software, Inc. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - cpu/sa1100/start.o (.text) - *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .got : { *(.got) } - -board/jornada/u-boot.lds line 58
Quoted 10 lines
board/jornada/u-boot.lds deleted +0
-10- . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - __bss_start = .; - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; -}Please CC jornada guy next time. Anyway, it looks ok to me, but IMO needs some testing.
M
PATCH 2/6 arm: Remove jornada link script
Quoted 4 lines · Marek Vasut
Quoted 1 line
Acked
Ok, so how shall we handle SA1110 ? I can pick it up, then send pullrq to albert ?
SGTM - Simon
Quoted 88 lines
M
Quoted 85 lines · Marek Vasut
Quoted 83 lines
Quoted 68 lines
This link script seems old and incompatible with relocation and its own sa1000
start.Sfile. It isn't used because the CPU's link script was picked up in preference to this.Signed-off-by Simon Glass <[email protected]>---
?board/jornada/u-boot.lds | ? 58
---------------------------------------------- 1 files changed, 0 insertions(+), 58 deletions(-)
?delete mode 100644
board/jornada/u-boot.ldsboard/jornada/u-boot.lds deleted +0
-48@@ -1,58 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd at denx.de. - * 2004 (c) MontaVista Software, Inc. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ?See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - ? ? ? ? cpu/sa1100/start.o ? ? ?(.text) - ? ? ? ? *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .got : { *(.got) } - -board/jornada/u-boot.lds line 58
Quoted 10 lines
board/jornada/u-boot.lds deleted +0
-10- . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - __bss_start = .; - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; -}Please CC jornada guy next time. Anyway, it looks ok to me, but IMO needs some testing.
M
PATCH 3/6 arm: Remove unneeded setting of LDCSRIPT
In reply to Simon GlassThis is set by the top level Makefile anyway, so drop it. This does have the effect of changing the order - now the board link script will have preference over the CPU one. But this seems more correct anyway.
--- arch/arm/config.mk | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
arch/arm/config.mk +0 -7
@@ -70,13 +70,6 @@ PLATFORM_LIBS := $(OBJTREE)/arch/arm/lib/eabi_compat.o \ endif endif -ifdef CONFIG_SYS_LDSCRIPT -# need to strip off double quotes -LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT)) -else -LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds -endif - # needed for relocation ifndef CONFIG_NAND_SPL LDFLAGS_u-boot += -pie
Signature · 1 line
1.7.3.1
PATCH 4/6 Define CPUDIR for the .lds link script
In reply to Simon GlassMost link scripts differ only in directory containing the start.o file. Make this a #define to remove this last difference.
--- Makefile | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
Makefile +3 -1
@@ -474,7 +474,9 @@ $(LDSCRIPT): depend $(MAKE) -C $(dir $@) $(notdir $@) $(obj)u-boot.lds: $(LDSCRIPT) - $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@ + $(CPP) $(CPPFLAGS) $(LDPPFLAGS) \ + -DCPUDIR=$(CPUDIR) \ + -ansi -D__ASSEMBLY__ -P - <$^ >$@ nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend $(MAKE) -C nand_spl/board/$(BOARDDIR) all
Signature · 1 line
1.7.3.1
PATCH 4/6 Define CPUDIR for the .lds link script
Hi,
Quoted 13 lines · Simon Glass
Most link scripts differ only in directory containing the start.o file. Make this a #define to remove this last difference.
Signed-off-by Simon Glass <[email protected]>---
?Makefile | ? ?4 +++-
?1 files changed, 3 insertions(+), 1 deletions(-)Makefile +0
-0
Makefile $(LDSCRIPT): ? ? ? ?depend · line 478
Quoted 6 lines
Makefile +2
-1@@ -474,7 +474,9 @@ $(LDSCRIPT): ? ? ? ?depend ? ? ? ? ? ? ? ?$(MAKE) -C $(dir $@) $(notdir $@) ?$(obj)u-boot.lds: $(LDSCRIPT) - ? ? ? ? ? ? ? $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@ + ? ? ? ? ? ? ? $(CPP) $(CPPFLAGS) $(LDPPFLAGS) \ + ? ? ? ? ? ? ? ? ? ? ? -DCPUDIR=$(CPUDIR) \
One more thought - this maintains current behaviour, but perhaps we could require that there be no other start.o in U-Boot? If so, then we should be able to omit the directory name from start.o.
Regards,
Simon
Quoted 8 lines
Makefile +1
-0+ ? ? ? ? ? ? ? ? ? ? ? -ansi -D__ASSEMBLY__ -P - <$^ >$@?nand_spl: ? ? ?$(TIMESTAMP_FILE) $(VERSION_FILE) depend ? ? ? ? ? ? ? ?$(MAKE) -C nand_spl/board/$(BOARDDIR) all --
1.7.3.1
PATCH 5/6 arm: add a common .lds link script
In reply to Simon GlassMost ARM CPUs use a very similar link script. This adds a basic script that can be used by most CPUs.
--- arch/arm/cpu/u-boot.lds | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 84 insertions(+), 0 deletions(-) create mode 100644 arch/arm/cpu/u-boot.lds
arch/arm/cpu/u-boot.lds new file +84 -0
@@ -0,0 +1,84 @@ +/* + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <[email protected]> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + CPUDIR/start.o (.text) + *(.text) + } + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(4); + .data : { + *(.data) + } + + . = ALIGN(4); + + . = .; + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + . = ALIGN(4); + + __image_copy_end = .; + + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + _end = .; + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss) + . = ALIGN(4); + __bss_end__ = .; + } + + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } +}
Signature · 1 line
1.7.3.1
PATCH 6/6 arm: Use common .lds file where possible
In reply to Simon GlassEach cpu directory currently has its own .lds file. This is only needed in most cases because the start.o file is in a different subdir.
Now that we can factor out this difference, we can move most cpus over to the common .lds file.
Series:cc: albert
--- arch/arm/cpu/arm1136/u-boot.lds | 89 ------------------------------------- arch/arm/cpu/arm1176/u-boot.lds | 78 -------------------------------- arch/arm/cpu/arm720t/u-boot.lds | 79 -------------------------------- arch/arm/cpu/arm920t/u-boot.lds | 88 ------------------------------------ arch/arm/cpu/arm925t/u-boot.lds | 83 ---------------------------------- arch/arm/cpu/arm926ejs/u-boot.lds | 80 --------------------------------- arch/arm/cpu/arm946es/u-boot.lds | 80 --------------------------------- arch/arm/cpu/arm_intcm/u-boot.lds | 80 --------------------------------- arch/arm/cpu/armv7/u-boot.lds | 85 ----------------------------------- arch/arm/cpu/lh7a40x/u-boot.lds | 80 --------------------------------- arch/arm/cpu/pxa/u-boot.lds | 80 --------------------------------- arch/arm/cpu/s3c44b0/u-boot.lds | 80 --------------------------------- arch/arm/cpu/sa1100/u-boot.lds | 83 ---------------------------------- 13 files changed, 0 insertions(+), 1065 deletions(-) delete mode 100644 arch/arm/cpu/arm1136/u-boot.lds delete mode 100644 arch/arm/cpu/arm1176/u-boot.lds delete mode 100644 arch/arm/cpu/arm720t/u-boot.lds delete mode 100644 arch/arm/cpu/arm920t/u-boot.lds delete mode 100644 arch/arm/cpu/arm925t/u-boot.lds delete mode 100644 arch/arm/cpu/arm926ejs/u-boot.lds delete mode 100644 arch/arm/cpu/arm946es/u-boot.lds delete mode 100644 arch/arm/cpu/arm_intcm/u-boot.lds delete mode 100644 arch/arm/cpu/armv7/u-boot.lds delete mode 100644 arch/arm/cpu/lh7a40x/u-boot.lds delete mode 100644 arch/arm/cpu/pxa/u-boot.lds delete mode 100644 arch/arm/cpu/s3c44b0/u-boot.lds delete mode 100644 arch/arm/cpu/sa1100/u-boot.lds
arch/arm/cpu/arm1136/u-boot.lds deleted +0 -89
@@ -1,89 +0,0 @@ -/* - * (C) Copyright 2009 - * Ilya Yanok, Emcraft Systems Ltd, <[email protected]> - * - * Copyright (C) 2005-2007 Samsung Electronics - * Kyungin Park <[email protected]> - * - * Copyright (c) 2004 Texas Instruments - * - * (C) Copyright 2002 - * Gary Jennejohn, DENX Software Engineering, <[email protected]> - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - arch/arm/cpu/arm1136/start.o (.text) - *(.text) - } - - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(4); - .data : { - *(.data) - } - - . = ALIGN(4); - - . = .; - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - . = ALIGN(4); - - .rel.dyn : { - __rel_dyn_start = .; - *(.rel*) - __rel_dyn_end = .; - } - - .dynsym : { - __dynsym_start = .; - *(.dynsym) - } - - _end = .; - - .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; - *(.bss) - . = ALIGN(4); - __bss_end__ = .; - } - - /DISCARD/ : { *(.dynstr*) } - /DISCARD/ : { *(.dynamic*) } - /DISCARD/ : { *(.plt*) } - /DISCARD/ : { *(.interp*) } - /DISCARD/ : { *(.gnu*) } -}
arch/arm/cpu/arm1176/u-boot.lds deleted +0 -78
78 lines not on this page · raw message
arch/arm/cpu/arm720t/u-boot.lds deleted +0 -79
79 lines not on this page · raw message
arch/arm/cpu/arm920t/u-boot.lds deleted +0 -88
88 lines not on this page · raw message
arch/arm/cpu/arm925t/u-boot.lds deleted +0 -83
83 lines not on this page · raw message
arch/arm/cpu/arm926ejs/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/arm946es/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/arm_intcm/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/armv7/u-boot.lds deleted +0 -85
85 lines not on this page · raw message
arch/arm/cpu/lh7a40x/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/pxa/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/s3c44b0/u-boot.lds deleted +0 -80
80 lines not on this page · raw message
arch/arm/cpu/sa1100/u-boot.lds deleted +0 -83
83 lines not on this page · raw message
Signature · 1 line
1.7.3.1
cover Tidy up ARM link scripts
In reply to Simon GlassQuoted 7 lines
The ARM link scripts are very similar but each CPU has its own. This series adds support for a default link script across an architecture in arch/<arch>/cpu/u-boot.lds.
It is then possible to remove most of the ARM link scripts. This will make it easier to maintain these.
Please CC Albert Aribaud <[email protected]> with such series.
Quoted 41 lines
Simon Glass (6):
Allow arch directory to contain .lds without requiringMakefile
arm: Remove jornada link script
arm: Remove unneeded setting of LDCSRIPT
Define CPUDIR for the .lds link script
arm: add a common .lds link script
arm: Use common .lds file where possibleMakefile | 13 ++++- arch/arm/config.mk | 7 --- arch/arm/cpu/arm1136/u-boot.lds | 89-----------------------------------
arch/arm/cpu/arm1176/u-boot.lds|
78 ------------------------------arch/arm/cpu/arm720t/u-boot.lds|
79 -------------------------------arch/arm/cpu/arm920t/u-boot.lds|
88 ----------------------------------arch/arm/cpu/arm925t/u-boot.lds
| 83 --------------------------------arch/arm/cpu/arm926ejs/u-boot.lds| 80 ------------------------------- arch/arm/cpu/arm946es/u-boot.lds | 80 ------------------------------- arch/arm/cpu/arm_intcm/u-boot.lds | 80 ------------------------------- arch/arm/cpu/lh7a40x/u-boot.lds | 80 ------------------------------- arch/arm/cpu/pxa/u-boot.lds | 80 ------------------------------- arch/arm/cpu/s3c44b0/u-boot.lds | 80 ------------------------------- arch/arm/cpu/sa1100/u-boot.lds | 83 -------------------------------- arch/arm/cpu/{armv7 => }/u-boot.lds | 5 +- board/jornada/u-boot.lds | 58 ----------------------- 16 files changed, 13 insertions(+), 1050 deletions(-) delete mode 100644 arch/arm/cpu/arm1136/u-boot.lds delete mode 100644 arch/arm/cpu/arm1176/u-boot.lds delete mode 100644 arch/arm/cpu/arm720t/u-boot.lds delete mode 100644 arch/arm/cpu/arm920t/u-boot.lds delete mode 100644 arch/arm/cpu/arm925t/u-boot.lds delete mode 100644 arch/arm/cpu/arm926ejs/u-boot.lds delete mode 100644 arch/arm/cpu/arm946es/u-boot.lds delete mode 100644 arch/arm/cpu/arm_intcm/u-boot.lds delete mode 100644 arch/arm/cpu/lh7a40x/u-boot.lds delete mode 100644 arch/arm/cpu/pxa/u-boot.lds delete mode 100644 arch/arm/cpu/s3c44b0/u-boot.lds delete mode 100644 arch/arm/cpu/sa1100/u-boot.lds rename arch/arm/cpu/{armv7 => }/u-boot.lds (94%) delete mode 100644 board/jornada/u-boot.lds
cover Tidy up ARM link scripts
Hi Marek,
Quoted 9 lines · Marek Vasut
Quoted 7 lines
The ARM link scripts are very similar but each CPU has its own. This series adds support for a default link script across an architecture in arch/<arch>/cpu/u-boot.lds.
It is then possible to remove most of the ARM link scripts. This will make it easier to maintain these.
Please CC Albert Aribaud <[email protected]> with such series.
Yes, I did intend to, but a typo got me. I have a new version with a few tidy-ups so will cc Albert with that one.
Regards
Simon
Quoted 42 lines
Quoted 41 lines
Simon Glass (6):
? Allow arch directory to contain .lds without requiringMakefile? arm: Remove jornada link script
? arm: Remove unneeded setting of LDCSRIPT
? Define CPUDIR for the .lds link script
? arm: add a common .lds link script
? arm: Use common .lds file where possible?Makefile ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 13 ++++- ?arch/arm/config.mk ? ? ? ? ? ? ? ? ?| ? ?7 --- ?arch/arm/cpu/arm1136/u-boot.lds ? ? | ? 89-----------------------------------
arch/arm/cpu/arm1176/u-boot.lds? ? | ?78 ------------------------------arch/arm/cpu/arm720t/u-boot.lds? ? | 79 -------------------------------arch/arm/cpu/arm920t/u-boot.lds? ? | 88 ----------------------------------arch/arm/cpu/arm925t/u-boot.lds| ? 83 --------------------------------arch/arm/cpu/arm926ejs/u-boot.lds?| ? 80 ------------------------------- arch/arm/cpu/arm946es/u-boot.lds ?| ? 80 ------------------------------- arch/arm/cpu/arm_intcm/u-boot.lds ?| ? 80 ------------------------------- arch/arm/cpu/lh7a40x/u-boot.lds ?| ? 80 ------------------------------- arch/arm/cpu/pxa/u-boot.lds ?| ? 80 ------------------------------- arch/arm/cpu/s3c44b0/u-boot.lds ?| ? 80 ------------------------------- arch/arm/cpu/sa1100/u-boot.lds ?| ? 83 -------------------------------- arch/arm/cpu/{armv7 =>
}/u-boot.lds| ? ?5 +-
?board/jornada/u-boot.lds ? ? ? ? ? ?| ? 58 ----------------------- ?16 files changed, 13 insertions(+), 1050 deletions(-) ?delete mode 100644arch/arm/cpu/arm1136/u-boot.lds?delete mode 100644arch/arm/cpu/arm1176/u-boot.lds?delete mode 100644arch/arm/cpu/arm720t/u-boot.lds?delete mode 100644arch/arm/cpu/arm920t/u-boot.lds?delete mode 100644arch/arm/cpu/arm925t/u-boot.lds?delete mode 100644arch/arm/cpu/arm926ejs/u-boot.lds?delete mode 100644arch/arm/cpu/arm946es/u-boot.lds?delete mode 100644arch/arm/cpu/arm_intcm/u-boot.lds?delete mode 100644arch/arm/cpu/lh7a40x/u-boot.lds?delete mode 100644arch/arm/cpu/pxa/u-boot.lds
?delete mode 100644arch/arm/cpu/s3c44b0/u-boot.lds?delete mode 100644arch/arm/cpu/sa1100/u-boot.lds?renamearch/arm/cpu/{armv7=>}/u-boot.lds(94%) ?delete mode 100644board/jornada/u-boot.lds
cover Tidy up ARM link scripts
Quoted 10 lines
Hi Marek,
Quoted 7 lines · Marek Vasut
Quoted 6 lines
The ARM link scripts are very similar but each CPU has its own. This series adds support for a default link script across an architecture in arch/<arch>/cpu/u-boot.lds.
It is then possible to remove most of the ARM link scripts. This will make it easier to maintain these.
Quoted 7 lines
Quoted 1 line
Please CC Albert Aribaud <[email protected]> with such series.
Yes, I did intend to, but a typo got me. I have a new version with a few tidy-ups so will cc Albert with that one.
Regards
Simon
Thanks!!
M
Quoted 46 lines
Quoted 46 lines
Quoted 46 lines
Simon Glass (6):
Allow arch directory to contain .lds without requiringMakefile
arm: Remove jornada link script
arm: Remove unneeded setting of LDCSRIPT
Define CPUDIR for the .lds link script
arm: add a common .lds link script
arm: Use common .lds file where possibleMakefile | 13 ++++- arch/arm/config.mk | 7 --- arch/arm/cpu/arm1136/u-boot.lds | 89-----------------------------------
arch/arm/cpu/arm1176/u-boot.lds| 78 ------------------------------arch/arm/cpu/arm720t/u-boot.lds| 79 -------------------------------arch/arm/cpu/arm920t/u-boot.lds
| 88 ----------------------------------arch/arm/cpu/arm925t/u-boot.lds| 83 --------------------------------
|arch/arm/cpu/arm926ejs/u-boot.lds| 80 ------------------------------- arch/arm/cpu/arm946es/u-boot.lds | 80 ------------------------------- arch/arm/cpu/arm_intcm/u-boot.lds | 80 ------------------------------- arch/arm/cpu/lh7a40x/u-boot.lds | 80 ------------------------------- arch/arm/cpu/pxa/u-boot.lds | 80 ------------------------------- arch/arm/cpu/s3c44b0/u-boot.lds | 80 ------------------------------- arch/arm/cpu/sa1100/u-boot.lds | 83 -------------------------------- arch/arm/cpu/{armv7 => }/u-boot.lds | 5 +- board/jornada/u-boot.lds | 58 ----------------------- 16 files changed, 13 insertions(+), 1050 deletions(-) delete mode 100644 arch/arm/cpu/arm1136/u-boot.lds delete mode 100644 arch/arm/cpu/arm1176/u-boot.lds delete mode 100644 arch/arm/cpu/arm720t/u-boot.lds delete mode 100644 arch/arm/cpu/arm920t/u-boot.lds delete mode 100644 arch/arm/cpu/arm925t/u-boot.lds delete mode 100644 arch/arm/cpu/arm926ejs/u-boot.lds delete mode 100644 arch/arm/cpu/arm946es/u-boot.lds delete mode 100644 arch/arm/cpu/arm_intcm/u-boot.lds delete mode 100644 arch/arm/cpu/lh7a40x/u-boot.lds delete mode 100644 arch/arm/cpu/pxa/u-boot.lds delete mode 100644 arch/arm/cpu/s3c44b0/u-boot.lds delete mode 100644 arch/arm/cpu/sa1100/u-boot.lds rename arch/arm/cpu/{armv7 => }/u-boot.lds (94%) delete mode 100644 board/jornada/u-boot.lds