[U-Boot] [PATCH 0/5] Optimize ARM relocation

Albert ARIBAUD albert.u.boot at aribaud.net
Tue May 14 22:02:55 CEST 2013


*** NOTE: this series applies over the 'Factorize
ARM relocate_code instances' series.

This series optimizes relocation by ensuring ARM
binaries only use one type of relocation record,
R_ARM_RELATIVE., then optimizing relocation code
accordingly.

The only known case where relocation records other
than R_ARM_RELATIVE are generated is when a reference
is made to a symbol defined in the linker script, e.g.
__image_copy_start, __image_copy_end, __rel_dyn_start,
__rel_dyn_end, and __dynsym_start.

Moving the definition of these symbols from the linker
scripts into a C module causes their references' types
to become R_ARM_RELATIVE.

First, arch/arm/lib/bss.c is replaced by a more generic
arch/arm/lib/sections.c where all section symbols will
be defined.

Second, __image_copy_start and __image_copy_end symbols
are moved from linker scripts to arch/arm/lib/sections.c

Third, __rel_dyn_start, __rel_dyn_end and __synsym_start
are moved from linker scripts into arch/arm/lib/sections.c

Fourth, a check is added to the build system to ensure
that ELF U-Boot binaries only use R_ARM_RELATIVE records.

Last, relocate_code is optimized


Albert ARIBAUD (5):
  arm: generalize lib/bss.c into lib/sections.c
  arm: make __image_copy_{start,end} compiler-generated
  arm: make relocation symbols compiler-generated
  arm: ensure u-boot only uses relative relocations
  arm: optimize relocate_code routine

 Makefile                               |    7 ++++
 arch/arm/config.mk                     |    5 +++
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds |    6 ++-
 arch/arm/cpu/ixp/u-boot.lds            |   24 ++++++++++--
 arch/arm/cpu/u-boot.lds                |   25 ++++++++++---
 arch/arm/lib/Makefile                  |    2 +-
 arch/arm/lib/relocate.S                |   64 +++++++++-----------------------
 arch/arm/lib/{bss.c => sections.c}     |    9 ++++-
 board/actux1/u-boot.lds                |   24 ++++++++++--
 board/actux2/u-boot.lds                |   24 ++++++++++--
 board/actux3/u-boot.lds                |   24 ++++++++++--
 board/dvlhost/u-boot.lds               |   24 ++++++++++--
 board/freescale/mx31ads/u-boot.lds     |   24 ++++++++++--
 13 files changed, 183 insertions(+), 79 deletions(-)
 rename arch/arm/lib/{bss.c => sections.c} (77%)

-- 
1.7.10.4



More information about the U-Boot mailing list