
Hi Tom,
On Mon, 25 Feb 2013 10:19:13 -0500, Tom Rini trini@ti.com wrote:
On Mon, Feb 25, 2013 at 11:58:56AM +0100, Albert ARIBAUD wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
Reviewed-by: Tom Rini trini@ti.com
Aside from ARM and I assume Sandbox, has this been runtime tested on other arches yet?
None other on my side.
Amicalement,